-- a simple quantum mechanics experiment: -- created 2021/6/22 -- updated 2021/6/23 -- let's first define a superposition, that we can measure one ket at a time: -- (it can be any superposition, with positive coefficients) the |superposition> => |a> + 0.2|b> + 0.5|c> + 8.1|d> + 0.01|e> -- now define the run experiment operator: -- each iteration it sets up a new experiment -- and then takes a measurement of that system -- (which is a single ket, chosen with probability according to the coefficients in the original superposition) -- then compares the cumulative result with the original superposition -- then outputs the similarity results for that trial -- over many, many trials, the result should converge towards that of the original superposition -- note that the magnitude of the superpositions do not matter in the simm() comparison -- it is their normalized "shape" that is compared run-experiment |*> #=> unlearn[the] |result> for( the|k> in |1> .. |__self>): measure |system> !=> clean weighted-pick-elt the |superposition> the |result> +=> measure |system> the |similarity> => simm(the |result>, the |superposition>) print (the |k> :_ round[1] extract-value push-float 100 the |similarity>) end: the |similarity> -- now invoke it for 500 trials: -- run-experiment |500>