From 94a52e2deddb45aa29b23b46fe50e2f908fed3f0 Mon Sep 17 00:00:00 2001 From: Sarah Marshall Date: Tue, 18 Aug 2020 16:38:35 -0700 Subject: [PATCH 01/17] Rename based on reserved word list --- .../SimulationCodeTests.fs | 4 +- src/Simulation/CsharpGeneration/EntryPoint.fs | 4 +- .../CsharpGeneration/SimulationCode.fs | 60 +++++++++++++------ 3 files changed, 48 insertions(+), 20 deletions(-) diff --git a/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs b/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs index 7de7c97eb5a..3b9062da732 100644 --- a/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs +++ b/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs @@ -1015,7 +1015,7 @@ namespace N1 let ``buildOperationInfoProperty test`` () = let testOne (_, op) expectedCodeString = let context = {createTestContext op with entryPoints = ImmutableArray.Create op.FullName} - let (_, operationName) = findClassName context op + let (_, operationName) = findClassName op let inType = op.Signature.ArgumentType |> roslynTypeName context let outType = op.Signature.ReturnType |> roslynTypeName context let codeString = @@ -2234,7 +2234,7 @@ namespace N1 let ``buildRun test`` () = let testOne (_,op) expected = let context = createTestContext op - let (name, nonGenericName) = findClassName context op + let _, nonGenericName = findClassName op let actual = buildRun context nonGenericName op.ArgumentTuple op.Signature.ArgumentType op.Signature.ReturnType |> formatSyntaxTree Assert.Equal(expected |> clearFormatting, actual |> clearFormatting) diff --git a/src/Simulation/CsharpGeneration/EntryPoint.fs b/src/Simulation/CsharpGeneration/EntryPoint.fs index 5ac2196043b..a1937bcf88b 100644 --- a/src/Simulation/CsharpGeneration/EntryPoint.fs +++ b/src/Simulation/CsharpGeneration/EntryPoint.fs @@ -112,7 +112,9 @@ let private createArgument context entryPoint = /// A tuple of the callable's name, argument type name, and return type name. let private callableTypeNames context (callable : QsCallable) = - let callableName = sprintf "global::%s.%s" callable.FullName.Namespace.Value callable.FullName.Name.Value + let callableName = + SimulationCode.userDefinedName None callable.FullName.Name.Value + |> sprintf "global::%s.%s" callable.FullName.Namespace.Value let argTypeName = SimulationCode.roslynTypeName context callable.Signature.ArgumentType let returnTypeName = SimulationCode.roslynTypeName context callable.Signature.ReturnType callableName, argTypeName, returnTypeName diff --git a/src/Simulation/CsharpGeneration/SimulationCode.fs b/src/Simulation/CsharpGeneration/SimulationCode.fs index dd853127c13..b8ba1905519 100644 --- a/src/Simulation/CsharpGeneration/SimulationCode.fs +++ b/src/Simulation/CsharpGeneration/SimulationCode.fs @@ -8,6 +8,7 @@ open System.Collections.Generic open System.Collections.Immutable open System.Linq open System.Reflection +open System.Text.RegularExpressions open Microsoft.CodeAnalysis open Microsoft.CodeAnalysis.CSharp.Syntax @@ -51,6 +52,17 @@ module SimulationCode = ("Step", { Namespace = "Microsoft.Quantum.Core" |> NonNullable.New; Name = "RangeStep" |> NonNullable.New } ) ] + let internal userDefinedName (parent : QsQualifiedName option) name = + let isReserved = + match name with + | "Data" + | "Info" + | "Run" -> true + | _ -> + Regex.IsMatch (name, "^Item\d+") || + parent |> Option.exists (fun current' -> name = current'.Name.Value) + if isReserved then name + "__" else name + let isCurrentOp context n = match context.current with | None -> false | Some name -> name = n let prependNamespaceString (name : QsQualifiedName) = @@ -88,7 +100,8 @@ module SimulationCode = let hasTypeParameters types = not (getTypeParameters types).IsEmpty let justTheName context (n: QsQualifiedName) = - if needsFullPath context n then n.Namespace.Value + "." + n.Name.Value else n.Name.Value + let name = userDefinedName None n.Name.Value + if needsFullPath context n then n.Namespace.Value + "." + name else name let isGeneric context (n: QsQualifiedName) = if context.allCallables.ContainsKey n then @@ -160,7 +173,7 @@ module SimulationCode = and roslynCallableTypeName context (name:QsQualifiedName) = if not (context.allCallables.ContainsKey name) then - name.Name.Value + userDefinedName None name.Name.Value else let signature = context.allCallables.[name].Signature let tIn = signature.ArgumentType @@ -393,9 +406,16 @@ module SimulationCode = and buildNamedItem ex acc = match acc with - | LocalVariable name -> (buildExpression ex) <|.|> (``ident`` name.Value) -// TODO: Diagnostics - | _ -> failwith "Invalid identifier for named item" + | LocalVariable name -> + let name' = + match ex.ResolvedType.Resolution with + | UserDefinedType udt -> + name.Value |> userDefinedName (Some { Namespace = udt.Namespace; Name = udt.Name }) + | _ -> name.Value + buildExpression ex <|.|> ident name' + | _ -> + // TODO: Diagnostics + failwith "Invalid identifier for named item" and buildAddExpr (exType : ResolvedType) lhs rhs = match exType.Resolution |> QArrayType with @@ -415,11 +435,11 @@ module SimulationCode = if isCurrentOp context n then Directives.Self |> ``ident`` :> ExpressionSyntax elif needsFullPath context n then - prependNamespaceString n |> ``ident`` :> ExpressionSyntax + prependNamespaceString n |> userDefinedName context.current |> ``ident`` :> ExpressionSyntax else - n.Name.Value |> ``ident`` :> ExpressionSyntax -// TODO: Diagnostics + n.Name.Value |> userDefinedName context.current |> ``ident`` :> ExpressionSyntax | InvalidIdentifier -> + // TODO: Diagnostics failwith "Received InvalidIdentifier" and buildCopyAndUpdateExpression (lhsEx : TypedExpression, accEx : TypedExpression, rhsEx) = @@ -856,7 +876,10 @@ module SimulationCode = let getTypeOfOp context (n: QsQualifiedName) = let name = let sameNamespace = match context.current with | None -> false | Some o -> o.Namespace = n.Namespace - let opName = if sameNamespace then n.Name.Value else "global::" + n.Namespace.Value + "." + n.Name.Value + let opName = + if sameNamespace + then userDefinedName None n.Name.Value + else "global::" + n.Namespace.Value + "." + userDefinedName None n.Name.Value if isGeneric context n then let signature = context.allCallables.[n].Signature let count = signature.TypeParameters.Length @@ -870,7 +893,7 @@ module SimulationCode = let parameters = [] let body = let buildOne n = - let name = getOpName context n + let name = getOpName context n |> userDefinedName context.current let lhs = ``ident`` "this" <|.|> ``ident`` name let rhs = if (isCurrentOp context n) && not (isGeneric context n) then @@ -916,7 +939,7 @@ module SimulationCode = /// eg: /// protected opType opName { get; } let signature = roslynCallableTypeName context qualifiedName - let name = getOpName context qualifiedName + let name = getOpName context qualifiedName |> userDefinedName context.current let modifiers = getPropertyModifiers qualifiedName ``prop`` signature name modifiers :> MemberDeclarationSyntax @@ -1295,8 +1318,8 @@ module SimulationCode = let name = function | ValidName n -> sprintf "__%s__" n.Value | InvalidName -> "__" signature.TypeParameters |> Seq.map name |> Seq.sort |> Seq.toList - let findClassName context (op: QsCallable) = - let name = op.FullName.Name.Value + let findClassName (op: QsCallable) = + let name = userDefinedName None op.FullName.Name.Value let typeParameters = typeParametersNames op.Signature let nonGeneric = if typeParameters.IsEmpty then name else sprintf "%s<%s>" name (String.Join(",", typeParameters)) (name, nonGeneric) @@ -1346,7 +1369,7 @@ module SimulationCode = // Builds the .NET class for the given operation. let buildOperationClass (globalContext:CodegenContext) (op: QsCallable) = let context = globalContext.setCallable op - let (name, nonGenericName) = findClassName context op + let (name, nonGenericName) = findClassName op let opNames = operationDependencies op let inType = op.Signature.ArgumentType |> roslynTypeName context let outType = op.Signature.ReturnType |> roslynTypeName context @@ -1424,7 +1447,7 @@ module SimulationCode = let buildUdtClass (globalContext:CodegenContext) (udt: QsCustomType) = let context = globalContext.setUdt udt - let name = udt.FullName.Name.Value + let name = userDefinedName None udt.FullName.Name.Value let qsharpType = udt.Type let buildEmtpyConstructor = let baseTupleType = @@ -1452,8 +1475,11 @@ module SimulationCode = :> MemberDeclarationSyntax let buildNamedItemFields = let produceProperty (decl : LocalVariableDeclaration>) valueExpr = - ``property-arrow_get`` (roslynTypeName context decl.Type) decl.VariableName.Value [ ``public`` ] - ``get`` (``=>`` valueExpr) :> MemberDeclarationSyntax + ``property-arrow_get`` + (roslynTypeName context decl.Type) + (userDefinedName context.current decl.VariableName.Value) + [ ``public`` ] ``get`` (``=>`` valueExpr) + :> MemberDeclarationSyntax let rec buildProps current = function | QsTuple items -> items |> Seq.mapi (fun i x -> buildProps (current <|.|> ``ident`` ("Item" + (i+1).ToString())) x) |> Seq.collect id | QsTupleItem (Anonymous _) -> Seq.empty From b043bcc496d459abf0076dd343ec69bce4874312 Mon Sep 17 00:00:00 2001 From: Sarah Marshall Date: Tue, 18 Aug 2020 16:50:48 -0700 Subject: [PATCH 02/17] Update namespace encoding --- src/Simulation/CsharpGeneration/SimulationCode.fs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Simulation/CsharpGeneration/SimulationCode.fs b/src/Simulation/CsharpGeneration/SimulationCode.fs index b8ba1905519..fbeee03478d 100644 --- a/src/Simulation/CsharpGeneration/SimulationCode.fs +++ b/src/Simulation/CsharpGeneration/SimulationCode.fs @@ -66,8 +66,7 @@ module SimulationCode = let isCurrentOp context n = match context.current with | None -> false | Some name -> name = n let prependNamespaceString (name : QsQualifiedName) = - let pieces = name.Namespace.Value.Split([|'.'|]) |> String.Concat - pieces + name.Name.Value + name.Namespace.Value.Replace (".", "__") + "__" + name.Name.Value let needsFullPath context (op:QsQualifiedName) = let hasMultipleDefinitions() = if context.byName.ContainsKey op.Name then context.byName.[op.Name].Length > 1 else false From e0f5177d05db6f7af888b1b164262103c7ce8a20 Mon Sep 17 00:00:00 2001 From: Sarah Marshall Date: Tue, 18 Aug 2020 17:55:59 -0700 Subject: [PATCH 03/17] Use underscores for Init and Factory --- src/Simulation/Common/SimulatorBase.cs | 2 +- src/Simulation/Core/AbstractCallable.cs | 6 ++--- .../Core/Functions/FunctionPartial.cs | 8 +++--- src/Simulation/Core/Generics/Adjoint.cs | 2 +- src/Simulation/Core/Generics/Controlled.cs | 2 +- .../Core/Generics/GenericCallable.cs | 6 ++--- .../Core/Generics/GenericPartial.cs | 2 +- src/Simulation/Core/Operations/Adjoint.cs | 4 +-- src/Simulation/Core/Operations/Controlled.cs | 4 +-- src/Simulation/Core/Operations/Operation.cs | 6 ++--- .../Core/Operations/OperationPartial.cs | 8 +++--- src/Simulation/Core/Udts/UdtFactory.cs | 4 +-- .../CsharpGeneration/SimulationCode.fs | 4 +-- .../QsharpCore/Statements/Allocate.cs | 2 +- .../QsharpCore/Statements/Borrow.cs | 2 +- .../QsharpCore/Statements/Release.cs | 2 +- .../QsharpCore/Statements/Return.cs | 4 +-- .../Circuits/NativeOperations.cs | 6 ++--- .../Simulators.Tests/GetQubitsTests.cs | 4 +-- .../Simulators.Tests/PartialMapperTests.cs | 2 +- .../Simulators.Tests/SimulatorBaseTests.cs | 26 +++++++++---------- .../QCTraceSimulator.Diagnostics.Dump.cs | 4 +-- 22 files changed, 55 insertions(+), 55 deletions(-) diff --git a/src/Simulation/Common/SimulatorBase.cs b/src/Simulation/Common/SimulatorBase.cs index bdb125468bf..396c6cea410 100644 --- a/src/Simulation/Common/SimulatorBase.cs +++ b/src/Simulation/Common/SimulatorBase.cs @@ -105,7 +105,7 @@ public virtual I Get() where T : AbstractCallable, I public virtual void Init(AbstractCallable op) { - op.Init(); + op.__Init__(); } public override AbstractCallable CreateInstance(Type t) diff --git a/src/Simulation/Core/AbstractCallable.cs b/src/Simulation/Core/AbstractCallable.cs index 8fc7c712603..047c74065f5 100644 --- a/src/Simulation/Core/AbstractCallable.cs +++ b/src/Simulation/Core/AbstractCallable.cs @@ -21,15 +21,15 @@ public abstract class AbstractCallable : IApplyData public AbstractCallable(IOperationFactory m) { - this.Factory = m; + this.__Factory__ = m; } - public IOperationFactory Factory { get; private set; } + public IOperationFactory __Factory__ { get; private set; } /// /// This method is called once, to let the Operation initialize and verify its dependencies. /// - public abstract void Init(); + public abstract void __Init__(); /// /// Retrieves the runtime metadata of the Operation. If the Operation has no associated diff --git a/src/Simulation/Core/Functions/FunctionPartial.cs b/src/Simulation/Core/Functions/FunctionPartial.cs index 97d77437aa3..4566a918007 100644 --- a/src/Simulation/Core/Functions/FunctionPartial.cs +++ b/src/Simulation/Core/Functions/FunctionPartial.cs @@ -14,7 +14,7 @@ namespace Microsoft.Quantum.Simulation.Core public class FunctionPartial : Function, ICallable { - public FunctionPartial(Function op, Func mapper) : base(op.Factory) + public FunctionPartial(Function op, Func mapper) : base(op.__Factory__) { Debug.Assert(op != null); Debug.Assert(mapper != null); @@ -23,7 +23,7 @@ public FunctionPartial(Function op, Func mapper) : base(op.Factory) this.Mapper = mapper; } - public FunctionPartial(Function op, object partialTuple) : base(op.Factory) + public FunctionPartial(Function op, object partialTuple) : base(op.__Factory__) { Debug.Assert(op != null); Debug.Assert(partialTuple != null); @@ -32,7 +32,7 @@ public FunctionPartial(Function op, object partialTuple) : base(op.Factory this.Mapper = PartialMapper.Create(partialTuple); } - public override void Init() { } + public override void __Init__() { } public ICallable BaseOp { get; } @@ -79,4 +79,4 @@ public DebuggerProxy(FunctionPartial op) : base(op) public ICallable Base => _op.BaseOp; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Core/Generics/Adjoint.cs b/src/Simulation/Core/Generics/Adjoint.cs index 45577250ebd..be38c67057f 100644 --- a/src/Simulation/Core/Generics/Adjoint.cs +++ b/src/Simulation/Core/Generics/Adjoint.cs @@ -25,7 +25,7 @@ public interface IAdjointable : ICallable [DebuggerTypeProxy(typeof(GenericAdjoint.DebuggerProxy))] public class GenericAdjoint : GenericCallable, IApplyData, IOperationWrapper { - public GenericAdjoint(GenericCallable baseOp) : base(baseOp.Factory, null) + public GenericAdjoint(GenericCallable baseOp) : base(baseOp.__Factory__, null) { this.BaseOp = baseOp; } diff --git a/src/Simulation/Core/Generics/Controlled.cs b/src/Simulation/Core/Generics/Controlled.cs index cc9b05fb994..f110cfef189 100644 --- a/src/Simulation/Core/Generics/Controlled.cs +++ b/src/Simulation/Core/Generics/Controlled.cs @@ -27,7 +27,7 @@ public partial interface IControllable : ICallable [DebuggerTypeProxy(typeof(GenericControlled.DebuggerProxy))] public class GenericControlled : GenericCallable, IApplyData, IOperationWrapper { - public GenericControlled(GenericCallable baseOp) : base(baseOp.Factory, null) + public GenericControlled(GenericCallable baseOp) : base(baseOp.__Factory__, null) { this.BaseOp = baseOp; } diff --git a/src/Simulation/Core/Generics/GenericCallable.cs b/src/Simulation/Core/Generics/GenericCallable.cs index cdd4ac3fce4..5dc7ebf3e2a 100644 --- a/src/Simulation/Core/Generics/GenericCallable.cs +++ b/src/Simulation/Core/Generics/GenericCallable.cs @@ -54,7 +54,7 @@ public GenericCallable(IOperationFactory m, Type baseOp) : base(m) _controlled = new Lazy(() => new GenericControlled(this)); } - public override void Init() { } + public override void __Init__() { } public Type OperationType { get; } @@ -103,12 +103,12 @@ protected virtual ICallable CreateCallable(Type I, Type O) op = FindClosedType(I, O); } - var get = this.Factory.GetType() + var get = this.__Factory__.GetType() .GetMethod("Get", new Type[0]); var result = get .MakeGenericMethod(typeof(ICallable), op) - .Invoke(this.Factory, new object[] { }) + .Invoke(this.__Factory__, new object[] { }) as ICallable; return result; diff --git a/src/Simulation/Core/Generics/GenericPartial.cs b/src/Simulation/Core/Generics/GenericPartial.cs index 8db1263639e..406dced1380 100644 --- a/src/Simulation/Core/Generics/GenericPartial.cs +++ b/src/Simulation/Core/Generics/GenericPartial.cs @@ -18,7 +18,7 @@ public class GenericPartial : GenericCallable, IApplyData, IOperationWrapper { private Lazy __qubits = null; - public GenericPartial(GenericCallable baseOp, object partialValues) : base(baseOp.Factory, null) + public GenericPartial(GenericCallable baseOp, object partialValues) : base(baseOp.__Factory__, null) { Debug.Assert(baseOp != null, "Received a null base operation"); Debug.Assert(partialValues != null, "Received a null partial value"); diff --git a/src/Simulation/Core/Operations/Adjoint.cs b/src/Simulation/Core/Operations/Adjoint.cs index 8e0efe35ad2..c39e86b874c 100644 --- a/src/Simulation/Core/Operations/Adjoint.cs +++ b/src/Simulation/Core/Operations/Adjoint.cs @@ -43,7 +43,7 @@ public Adjointable(IOperationFactory m) : base(m) [DebuggerTypeProxy(typeof(AdjointedOperation<,>.DebuggerProxy))] public class AdjointedOperation : Unitary, IApplyData, ICallable, IOperationWrapper { - public AdjointedOperation(Operation op) : base(op.Factory) + public AdjointedOperation(Operation op) : base(op.__Factory__) { Debug.Assert(typeof(O) == typeof(QVoid)); Debug.Assert(op is Operation); @@ -54,7 +54,7 @@ public AdjointedOperation(Operation op) : base(op.Factory) public Operation BaseOp { get; } ICallable IOperationWrapper.BaseOperation => BaseOp; - public override void Init() { } + public override void __Init__() { } string ICallable.Name => ((ICallable)this.BaseOp).Name; string ICallable.FullName => ((ICallable)this.BaseOp).FullName; diff --git a/src/Simulation/Core/Operations/Controlled.cs b/src/Simulation/Core/Operations/Controlled.cs index 770a9081f6f..a1933734436 100644 --- a/src/Simulation/Core/Operations/Controlled.cs +++ b/src/Simulation/Core/Operations/Controlled.cs @@ -60,7 +60,7 @@ public In((IQArray, IApplyData) data) IEnumerable IApplyData.Qubits => Qubit.Concat(Ctrls, BaseData?.Qubits); } - public ControlledOperation(Operation op) : base(op.Factory) + public ControlledOperation(Operation op) : base(op.__Factory__) { Debug.Assert(typeof(O) == typeof(QVoid)); Debug.Assert(op is Operation); @@ -71,7 +71,7 @@ public ControlledOperation(Operation op) : base(op.Factory) public Operation BaseOp { get; } ICallable IOperationWrapper.BaseOperation => BaseOp; - public override void Init() { } + public override void __Init__() { } string ICallable.Name => ((ICallable)this.BaseOp).Name; string ICallable.FullName => ((ICallable)this.BaseOp).FullName; diff --git a/src/Simulation/Core/Operations/Operation.cs b/src/Simulation/Core/Operations/Operation.cs index 6a20d69af6c..6c05e6c8cfd 100644 --- a/src/Simulation/Core/Operations/Operation.cs +++ b/src/Simulation/Core/Operations/Operation.cs @@ -92,17 +92,17 @@ public O Apply(I a) try { - this.Factory?.StartOperation(this, __dataIn(a)); + this.__Factory__?.StartOperation(this, __dataIn(a)); __result__ = this.Body(a); } catch (Exception e) { - this.Factory?.Fail(System.Runtime.ExceptionServices.ExceptionDispatchInfo.Capture(e)); + this.__Factory__?.Fail(System.Runtime.ExceptionServices.ExceptionDispatchInfo.Capture(e)); throw; } finally { - this.Factory?.EndOperation(this, __dataOut(__result__)); + this.__Factory__?.EndOperation(this, __dataOut(__result__)); } return __result__; diff --git a/src/Simulation/Core/Operations/OperationPartial.cs b/src/Simulation/Core/Operations/OperationPartial.cs index 5a68394d3eb..7066ff28467 100644 --- a/src/Simulation/Core/Operations/OperationPartial.cs +++ b/src/Simulation/Core/Operations/OperationPartial.cs @@ -38,7 +38,7 @@ public In(Operation op, Func mapper, P data) } - public OperationPartial(Operation op, Func mapper) : base(op.Factory) + public OperationPartial(Operation op, Func mapper) : base(op.__Factory__) { Debug.Assert(op != null); Debug.Assert(mapper != null); @@ -48,7 +48,7 @@ public OperationPartial(Operation op, Func mapper) : base(op.Factory this.__qubits = new Lazy(() => op?.__dataIn(mapper(default(P)))?.Qubits?.ToArray()); } - public OperationPartial(Operation op, object partialTuple) : base(op.Factory) + public OperationPartial(Operation op, object partialTuple) : base(op.__Factory__) { Debug.Assert(op != null); Debug.Assert(partialTuple != null); @@ -58,7 +58,7 @@ public OperationPartial(Operation op, object partialTuple) : base(op.Facto this.__qubits = new Lazy(() => op?.__dataIn(this.Mapper(default(P)))?.Qubits?.ToArray()); } - public override void Init() { } + public override void __Init__() { } public Operation BaseOp { get; } ICallable IOperationWrapper.BaseOperation => BaseOp; @@ -167,4 +167,4 @@ public DebuggerProxy(OperationPartial op) : base(op) public Operation Base => _op.BaseOp; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Core/Udts/UdtFactory.cs b/src/Simulation/Core/Udts/UdtFactory.cs index 90c7c27e655..d4677b98b63 100644 --- a/src/Simulation/Core/Udts/UdtFactory.cs +++ b/src/Simulation/Core/Udts/UdtFactory.cs @@ -47,7 +47,7 @@ public T Partial(object partialInfo) public ICallable Partial(object partialTuple) => this.Partial(partialTuple); - public override void Init() + public override void __Init__() { } } -} \ No newline at end of file +} diff --git a/src/Simulation/CsharpGeneration/SimulationCode.fs b/src/Simulation/CsharpGeneration/SimulationCode.fs index fbeee03478d..aa56c7833a9 100644 --- a/src/Simulation/CsharpGeneration/SimulationCode.fs +++ b/src/Simulation/CsharpGeneration/SimulationCode.fs @@ -899,12 +899,12 @@ module SimulationCode = "this" |> ``ident`` :> ExpressionSyntax else let signature = roslynCallableTypeName context n - let factoryGet = (``ident`` "this" <|.|> ``ident`` "Factory" <|.|> (generic "Get" ``<<`` [ signature ] ``>>``)) + let factoryGet = (``ident`` "this" <|.|> ``ident`` "__Factory__" <|.|> (generic "Get" ``<<`` [ signature ] ``>>``)) (``invoke`` factoryGet ``(`` [ (getTypeOfOp context n) ] ``)``) statement (lhs <-- rhs) operations |> List.map buildOne - ``method`` "void" "Init" ``<<`` [] ``>>`` + ``method`` "void" "__Init__" ``<<`` [] ``>>`` ``(`` parameters ``)`` [ ``public``; ``override`` ] ``{`` body ``}`` diff --git a/src/Simulation/QsharpCore/Statements/Allocate.cs b/src/Simulation/QsharpCore/Statements/Allocate.cs index e2746586d8a..0b7f862445a 100644 --- a/src/Simulation/QsharpCore/Statements/Allocate.cs +++ b/src/Simulation/QsharpCore/Statements/Allocate.cs @@ -13,6 +13,6 @@ public Allocate(IOperationFactory m) : base(m) { } public abstract IQArray Apply(long count); - public override void Init() { } + public override void __Init__() { } } } diff --git a/src/Simulation/QsharpCore/Statements/Borrow.cs b/src/Simulation/QsharpCore/Statements/Borrow.cs index 7d24e4c1adb..09bfebc7e82 100644 --- a/src/Simulation/QsharpCore/Statements/Borrow.cs +++ b/src/Simulation/QsharpCore/Statements/Borrow.cs @@ -13,7 +13,7 @@ public Borrow(IOperationFactory m) : base(m) { } public abstract IQArray Apply(long count); - public override void Init() { } + public override void __Init__() { } } } diff --git a/src/Simulation/QsharpCore/Statements/Release.cs b/src/Simulation/QsharpCore/Statements/Release.cs index 4400dd0275c..6db24712412 100644 --- a/src/Simulation/QsharpCore/Statements/Release.cs +++ b/src/Simulation/QsharpCore/Statements/Release.cs @@ -13,6 +13,6 @@ public Release(IOperationFactory m) : base(m) { } public abstract void Apply(IQArray qubits); - public override void Init() { } + public override void __Init__() { } } } diff --git a/src/Simulation/QsharpCore/Statements/Return.cs b/src/Simulation/QsharpCore/Statements/Return.cs index f3306225227..291c6d78856 100644 --- a/src/Simulation/QsharpCore/Statements/Return.cs +++ b/src/Simulation/QsharpCore/Statements/Return.cs @@ -13,6 +13,6 @@ public Return(IOperationFactory m) : base(m) { } public abstract void Apply(IQArray qubits); - public override void Init() { } + public override void __Init__() { } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators.Tests/Circuits/NativeOperations.cs b/src/Simulation/Simulators.Tests/Circuits/NativeOperations.cs index 342a4fb7acb..5187e539d4c 100644 --- a/src/Simulation/Simulators.Tests/Circuits/NativeOperations.cs +++ b/src/Simulation/Simulators.Tests/Circuits/NativeOperations.cs @@ -36,11 +36,11 @@ public Native(IOperationFactory m) : base(m) { } public override Func Body => (arg) => { - if (this.Factory is QuantumSimulator) + if (this.__Factory__ is QuantumSimulator) { return "Simulator"; } - else if (this.Factory is ToffoliSimulator) + else if (this.__Factory__ is ToffoliSimulator) { return "Toffoli"; } @@ -105,4 +105,4 @@ public Emulation(IOperationFactory m) : base(m) { } }; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators.Tests/GetQubitsTests.cs b/src/Simulation/Simulators.Tests/GetQubitsTests.cs index c952d210e5a..57fb886eb7b 100644 --- a/src/Simulation/Simulators.Tests/GetQubitsTests.cs +++ b/src/Simulation/Simulators.Tests/GetQubitsTests.cs @@ -22,7 +22,7 @@ internal class UnitaryNoOp : Unitary, ICallable { public UnitaryNoOp() : base(null) { } - public override void Init() { } + public override void __Init__() { } public override Func<(IQArray, TInput), QVoid> ControlledAdjointBody => (arg) => { @@ -392,4 +392,4 @@ private static void AssertIDataQubits(IApplyData d, params Qubit[] expected) AssertEnumerable(expected, d.Qubits); } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators.Tests/PartialMapperTests.cs b/src/Simulation/Simulators.Tests/PartialMapperTests.cs index f945357366d..85887b64124 100644 --- a/src/Simulation/Simulators.Tests/PartialMapperTests.cs +++ b/src/Simulation/Simulators.Tests/PartialMapperTests.cs @@ -21,7 +21,7 @@ public NoOp(IOperationFactory m) : base(m) { } public override Func Body => (a) => QVoid.Instance; - public override void Init() { } + public override void __Init__() { } } private void TestOneTupleNoSubstitution(I original, params object[] expected) diff --git a/src/Simulation/Simulators.Tests/SimulatorBaseTests.cs b/src/Simulation/Simulators.Tests/SimulatorBaseTests.cs index f9b73e477e9..b96ca6a6b86 100644 --- a/src/Simulation/Simulators.Tests/SimulatorBaseTests.cs +++ b/src/Simulation/Simulators.Tests/SimulatorBaseTests.cs @@ -345,7 +345,7 @@ public DummyM(IOperationFactory m) : base(m) public override Func Body => throw new NotImplementedException(); - public override void Init() + public override void __Init__() { } } @@ -363,9 +363,9 @@ public DependsOnX(IOperationFactory m) : base(m) public IUnitary X { get; set; } - public override void Init() + public override void __Init__() { - this.X = this.Factory.Get, Intrinsic.X>(); + this.X = this.__Factory__.Get, Intrinsic.X>(); } public override Func Body => throw new NotImplementedException(); @@ -384,7 +384,7 @@ public LikeX(IOperationFactory m) : base(m) string ICallable.FullName => "LikeX"; - public override void Init() { } + public override void __Init__() { } public override Func<(IQArray, Qubit), QVoid> ControlledAdjointBody => throw new NotImplementedException(); @@ -407,9 +407,9 @@ public A(IOperationFactory m) : base(m) public ICallable B { get; set; } - public override void Init() + public override void __Init__() { - this.B = this.Factory.Get(); + this.B = this.__Factory__.Get(); } string ICallable.FullName => "A"; @@ -430,9 +430,9 @@ public B(IOperationFactory m) : base(m) public ICallable A { get; set; } - public override void Init() + public override void __Init__() { - this.A = this.Factory.Get(); + this.A = this.__Factory__.Get(); } public override Func Body => (_) => { return QVoid.Instance; }; @@ -452,10 +452,10 @@ public Gen(IOperationFactory m) : base(m) public IUnitary X { get; set; } - public override void Init() + public override void __Init__() { - this.A = this.Factory.Get(); - this.X = this.Factory.Get, Intrinsic.X>(); + this.A = this.__Factory__.Get(); + this.X = this.__Factory__.Get, Intrinsic.X>(); } } @@ -472,9 +472,9 @@ public DependsOnGen(IOperationFactory m) : base(m) public override Func Body => (_) => { return QVoid.Instance; }; - public override void Init() + public override void __Init__() { - this.Gen = this.Factory.Get(typeof(Gen<>)); + this.Gen = this.__Factory__.Get(typeof(Gen<>)); } } } diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Diagnostics.Dump.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Diagnostics.Dump.cs index bd42f186292..d7f478b1837 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Diagnostics.Dump.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Diagnostics.Dump.cs @@ -23,7 +23,7 @@ public TracerDumpMachine(QCTraceSimulatorImpl m) : base(m) var filename = (location is QVoid) ? "" : location.ToString(); var msg = "QCTraceSimulator doesn't support state dump."; - var logMessage = this.Factory.Get, Intrinsic.Message>(); + var logMessage = this.__Factory__.Get, Intrinsic.Message>(); if (string.IsNullOrEmpty(filename)) { @@ -62,7 +62,7 @@ public TracerDumpRegister(QCTraceSimulatorImpl m) : base(m) var filename = (location is QVoid) ? "" : location.ToString(); var msg = "QCTraceSimulator doesn't support state dump."; - var logMessage = this.Factory.Get, Intrinsic.Message>(); + var logMessage = this.__Factory__.Get, Intrinsic.Message>(); if (string.IsNullOrEmpty(filename)) { From 44d91c8f29e6da42db13a3fe4504c7f3d9d638fd Mon Sep 17 00:00:00 2001 From: Sarah Marshall Date: Tue, 18 Aug 2020 18:19:16 -0700 Subject: [PATCH 04/17] Use underscores for specialization names --- src/Simulation/Common/SimulatorBase.cs | 10 +-- src/Simulation/Core/Functions/Function.cs | 4 +- .../Core/Functions/FunctionPartial.cs | 2 +- src/Simulation/Core/Operations/Adjoint.cs | 8 +-- src/Simulation/Core/Operations/Controlled.cs | 12 ++-- src/Simulation/Core/Operations/Operation.cs | 10 +-- .../Core/Operations/OperationPartial.cs | 16 ++--- .../CsharpGeneration/SimulationCode.fs | 8 +-- src/Simulation/QsharpCore/Bitwise/Bitwise.cs | 14 ++-- src/Simulation/QsharpCore/Convert/Convert.cs | 22 +++--- src/Simulation/QsharpCore/Core.cs | 10 +-- src/Simulation/QsharpCore/Math/Math.cs | 72 +++++++++---------- .../Simulators.Tests/Circuits/AssertEqual.cs | 2 +- .../Circuits/NativeOperations.cs | 14 ++-- .../Simulators.Tests/GetQubitsTests.cs | 8 +-- .../Simulators.Tests/OperationsTestHelper.cs | 16 ++--- .../Simulators.Tests/PartialMapperTests.cs | 2 +- .../QuantumSimulatorTests/BasicTests.cs | 4 +- .../Simulators.Tests/SimulatorBaseTests.cs | 24 +++---- .../Simulators.Tests/ToffoliSimulatorTests.cs | 4 +- .../QCTraceSimulator.ClassicalControl.cs | 16 ++--- .../QCTraceSimulator.Diagnostics.Dump.cs | 4 +- .../QCTraceSimulator.Interface.CX.cs | 4 +- .../QCTraceSimulator.Interface.Clifford.cs | 4 +- ...QCTraceSimulator.Interface.ForceMeasure.cs | 4 +- .../QCTraceSimulator.Interface.R.cs | 4 +- .../QCTraceSimulator.Interface.RFrac.cs | 4 +- .../QCTraceSimulator.Primitive.Assert.cs | 10 +-- .../QCTraceSimulator.Primitive.AssertProb.cs | 10 +-- .../QCTraceSimulator.Primitive.Measure.cs | 4 +- .../QCTraceSimulator.Primitive.random.cs | 2 +- .../Simulators/QuantumProcessor/Assert.cs | 8 +-- .../Simulators/QuantumProcessor/AssertProb.cs | 8 +-- .../QuantumProcessor/ClassicalControl.cs | 36 +++++----- .../Simulators/QuantumProcessor/Dump.cs | 4 +- .../Simulators/QuantumProcessor/Exp.cs | 12 ++-- .../Simulators/QuantumProcessor/ExpFrac.cs | 12 ++-- .../Simulators/QuantumProcessor/H.cs | 4 +- .../Simulators/QuantumProcessor/M.cs | 2 +- .../Simulators/QuantumProcessor/Measure.cs | 2 +- .../Simulators/QuantumProcessor/R.cs | 12 ++-- .../Simulators/QuantumProcessor/R1.cs | 12 ++-- .../Simulators/QuantumProcessor/R1Frac.cs | 12 ++-- .../Simulators/QuantumProcessor/RFrac.cs | 12 ++-- .../Simulators/QuantumProcessor/Reset.cs | 2 +- .../Simulators/QuantumProcessor/S.cs | 8 +-- .../Simulators/QuantumProcessor/SWAP.cs | 4 +- .../Simulators/QuantumProcessor/T.cs | 8 +-- .../Simulators/QuantumProcessor/X.cs | 4 +- .../Simulators/QuantumProcessor/Y.cs | 4 +- .../Simulators/QuantumProcessor/Z.cs | 4 +- .../Simulators/QuantumProcessor/random.cs | 2 +- .../Simulators/QuantumSimulator/Assert.cs | 8 +-- .../Simulators/QuantumSimulator/AssertProb.cs | 8 +-- .../QuantumSimulator/ClassicalControl.cs | 36 +++++----- .../Simulators/QuantumSimulator/Dump.cs | 4 +- .../Simulators/QuantumSimulator/Exp.cs | 14 ++-- .../Simulators/QuantumSimulator/ExpFrac.cs | 8 +-- .../Simulators/QuantumSimulator/H.cs | 4 +- .../Simulators/QuantumSimulator/M.cs | 2 +- .../Simulators/QuantumSimulator/Measure.cs | 2 +- .../Simulators/QuantumSimulator/R.cs | 14 ++-- .../Simulators/QuantumSimulator/RFrac.cs | 8 +-- .../Simulators/QuantumSimulator/S.cs | 10 +-- .../Simulators/QuantumSimulator/T.cs | 10 +-- .../Simulators/QuantumSimulator/X.cs | 4 +- .../Simulators/QuantumSimulator/Y.cs | 4 +- .../Simulators/QuantumSimulator/Z.cs | 4 +- .../Simulators/QuantumSimulator/random.cs | 2 +- .../Simulators/ToffoliSimulator/Assert.cs | 8 +-- .../Simulators/ToffoliSimulator/AssertProb.cs | 8 +-- .../Simulators/ToffoliSimulator/Dump.cs | 4 +- .../Simulators/ToffoliSimulator/Exp.cs | 8 +-- .../Simulators/ToffoliSimulator/ExpFrac.cs | 8 +-- .../Simulators/ToffoliSimulator/H.cs | 2 +- .../Simulators/ToffoliSimulator/M.cs | 2 +- .../Simulators/ToffoliSimulator/Measure.cs | 2 +- .../Simulators/ToffoliSimulator/R.cs | 8 +-- .../Simulators/ToffoliSimulator/RFrac.cs | 8 +-- .../Simulators/ToffoliSimulator/Random.cs | 2 +- .../Simulators/ToffoliSimulator/S.cs | 2 +- .../Simulators/ToffoliSimulator/SWAP.cs | 4 +- .../Simulators/ToffoliSimulator/T.cs | 2 +- .../Simulators/ToffoliSimulator/X.cs | 4 +- .../Simulators/ToffoliSimulator/Y.cs | 2 +- .../Simulators/ToffoliSimulator/Z.cs | 2 +- 86 files changed, 359 insertions(+), 359 deletions(-) diff --git a/src/Simulation/Common/SimulatorBase.cs b/src/Simulation/Common/SimulatorBase.cs index 396c6cea410..76093839252 100644 --- a/src/Simulation/Common/SimulatorBase.cs +++ b/src/Simulation/Common/SimulatorBase.cs @@ -393,7 +393,7 @@ public Message(SimulatorBase m) : base(m) sim = m; } - public override Func Body => (msg) => + public override Func __Body__ => (msg) => { sim.OnLog?.Invoke(msg); return QVoid.Instance; @@ -412,7 +412,7 @@ public GetQubitsAvailableToUse(SimulatorBase m) : base(m) sim = m; } - public override Func Body => (arg) => sim.QubitManager.GetFreeQubitsCount(); + public override Func __Body__ => (arg) => sim.QubitManager.GetFreeQubitsCount(); } /// @@ -427,7 +427,7 @@ public GetQubitsAvailableToBorrow(SimulatorBase m) : base(m) sim = m; } - public override Func Body => (arg) => sim.QubitManager.GetParentQubitsAvailableToBorrowCount() + + public override Func __Body__ => (arg) => sim.QubitManager.GetParentQubitsAvailableToBorrowCount() + sim.QubitManager.GetFreeQubitsCount(); } @@ -444,7 +444,7 @@ public DrawRandomInt(SimulatorBase m) : base(m) sim = m; } - public override Func<(long, long), long> Body => arg => + public override Func<(long, long), long> __Body__ => arg => { var (min, max) = arg; if (max <= min) @@ -468,7 +468,7 @@ public DrawRandomDouble(SimulatorBase m) : base(m) sim = m; } - public override Func<(double, double), double> Body => arg => + public override Func<(double, double), double> __Body__ => arg => { var (min, max) = arg; if (max <= min) diff --git a/src/Simulation/Core/Functions/Function.cs b/src/Simulation/Core/Functions/Function.cs index 6c7bd93847c..dfe7fe2defa 100644 --- a/src/Simulation/Core/Functions/Function.cs +++ b/src/Simulation/Core/Functions/Function.cs @@ -29,7 +29,7 @@ public Function(IOperationFactory m) : base(m) OperationFunctor ICallable.Variant => OperationFunctor.Body; [DebuggerBrowsable(DebuggerBrowsableState.Never)] - public abstract Func Body { get; } + public abstract Func __Body__ { get; } public virtual IApplyData __dataIn(I data) => new QTuple(data); @@ -37,7 +37,7 @@ public Function(IOperationFactory m) : base(m) public O Apply(I a) { - var __result__ = this.Body(a); + var __result__ = this.__Body__(a); return __result__; } diff --git a/src/Simulation/Core/Functions/FunctionPartial.cs b/src/Simulation/Core/Functions/FunctionPartial.cs index 4566a918007..e46f656d596 100644 --- a/src/Simulation/Core/Functions/FunctionPartial.cs +++ b/src/Simulation/Core/Functions/FunctionPartial.cs @@ -43,7 +43,7 @@ public override void __Init__() { } OperationFunctor ICallable.Variant => ((ICallable)this.BaseOp).Variant; - public override Func Body => (a) => + public override Func __Body__ => (a) => { var args = this.Mapper(a); return this.BaseOp.Apply(args); diff --git a/src/Simulation/Core/Operations/Adjoint.cs b/src/Simulation/Core/Operations/Adjoint.cs index c39e86b874c..1a1ec1bb14c 100644 --- a/src/Simulation/Core/Operations/Adjoint.cs +++ b/src/Simulation/Core/Operations/Adjoint.cs @@ -60,13 +60,13 @@ public override void __Init__() { } string ICallable.FullName => ((ICallable)this.BaseOp).FullName; OperationFunctor ICallable.Variant => ((ICallable)this.BaseOp).AdjointVariant(); - public override Func Body => this.BaseOp.AdjointBody; + public override Func __Body__ => this.BaseOp.__AdjointBody__; - public override Func AdjointBody => this.BaseOp.Body; + public override Func __AdjointBody__ => this.BaseOp.__Body__; - public override Func<(IQArray, I), QVoid> ControlledBody => this.BaseOp.ControlledAdjointBody; + public override Func<(IQArray, I), QVoid> __ControlledBody__ => this.BaseOp.__ControlledAdjointBody__; - public override Func<(IQArray, I), QVoid> ControlledAdjointBody => this.BaseOp.ControlledBody; + public override Func<(IQArray, I), QVoid> __ControlledAdjointBody__ => this.BaseOp.__ControlledBody__; IEnumerable IApplyData.Qubits => ((IApplyData)this.BaseOp).Qubits; diff --git a/src/Simulation/Core/Operations/Controlled.cs b/src/Simulation/Core/Operations/Controlled.cs index a1933734436..9733e30ca6a 100644 --- a/src/Simulation/Core/Operations/Controlled.cs +++ b/src/Simulation/Core/Operations/Controlled.cs @@ -77,11 +77,11 @@ public override void __Init__() { } string ICallable.FullName => ((ICallable)this.BaseOp).FullName; OperationFunctor ICallable.Variant => ((ICallable)this.BaseOp).ControlledVariant(); - public override Func<(IQArray, I), QVoid> Body => this.BaseOp.ControlledBody; + public override Func<(IQArray, I), QVoid> __Body__ => this.BaseOp.__ControlledBody__; - public override Func<(IQArray, I), QVoid> AdjointBody => this.BaseOp.ControlledAdjointBody; + public override Func<(IQArray, I), QVoid> __AdjointBody__ => this.BaseOp.__ControlledAdjointBody__; - public override Func<(IQArray, (IQArray, I)), QVoid> ControlledBody + public override Func<(IQArray, (IQArray, I)), QVoid> __ControlledBody__ { get { @@ -89,12 +89,12 @@ public override void __Init__() { } { var (ctrl1, (ctrl2, args)) = __in; var ctrls = QArray.Add(ctrl1, ctrl2); - return this.BaseOp.ControlledBody.Invoke((ctrls, args)); + return this.BaseOp.__ControlledBody__.Invoke((ctrls, args)); }; } } - public override Func<(IQArray, (IQArray, I)), QVoid> ControlledAdjointBody + public override Func<(IQArray, (IQArray, I)), QVoid> __ControlledAdjointBody__ { get { @@ -102,7 +102,7 @@ public override void __Init__() { } { var (ctrl1, (ctrl2, args)) = __in; var ctrls = QArray.Add(ctrl1, ctrl2); - return this.BaseOp.ControlledAdjointBody.Invoke((ctrls, args)); + return this.BaseOp.__ControlledAdjointBody__.Invoke((ctrls, args)); }; } } diff --git a/src/Simulation/Core/Operations/Operation.cs b/src/Simulation/Core/Operations/Operation.cs index 6c05e6c8cfd..7493eebb994 100644 --- a/src/Simulation/Core/Operations/Operation.cs +++ b/src/Simulation/Core/Operations/Operation.cs @@ -60,16 +60,16 @@ public Operation(IOperationFactory m) : base(m) public virtual IApplyData __dataOut(O data) => new QTuple(data); [DebuggerBrowsable(DebuggerBrowsableState.Never)] - public abstract Func Body { get; } + public abstract Func __Body__ { get; } [DebuggerBrowsable(DebuggerBrowsableState.Never)] - public virtual Func AdjointBody => throw new NotImplementedException(); + public virtual Func __AdjointBody__ => throw new NotImplementedException(); [DebuggerBrowsable(DebuggerBrowsableState.Never)] - public virtual Func<(IQArray, I), QVoid> ControlledBody => throw new NotImplementedException(); + public virtual Func<(IQArray, I), QVoid> __ControlledBody__ => throw new NotImplementedException(); [DebuggerBrowsable(DebuggerBrowsableState.Never)] - public virtual Func<(IQArray, I), QVoid> ControlledAdjointBody => throw new NotImplementedException(); + public virtual Func<(IQArray, I), QVoid> __ControlledAdjointBody__ => throw new NotImplementedException(); [DebuggerBrowsable(DebuggerBrowsableState.Never)] public AdjointedOperation Adjoint => _adjoint.Value; @@ -93,7 +93,7 @@ public O Apply(I a) try { this.__Factory__?.StartOperation(this, __dataIn(a)); - __result__ = this.Body(a); + __result__ = this.__Body__(a); } catch (Exception e) { diff --git a/src/Simulation/Core/Operations/OperationPartial.cs b/src/Simulation/Core/Operations/OperationPartial.cs index 7066ff28467..7a4a7f83e74 100644 --- a/src/Simulation/Core/Operations/OperationPartial.cs +++ b/src/Simulation/Core/Operations/OperationPartial.cs @@ -74,35 +74,35 @@ public override void __Init__() { } public override IApplyData __dataOut(O data) => this.BaseOp.__dataOut(data); - public override Func Body => (a) => + public override Func __Body__ => (a) => { var args = this.Mapper(a); - return this.BaseOp.Body.Invoke(args); + return this.BaseOp.__Body__.Invoke(args); }; - public override Func AdjointBody => (a) => + public override Func __AdjointBody__ => (a) => { Debug.Assert(typeof(O) == typeof(QVoid)); var op = this.BaseOp; var args = this.Mapper(a); - return op.AdjointBody.Invoke(args); + return op.__AdjointBody__.Invoke(args); }; - public override Func<(IQArray, P), QVoid> ControlledBody => (a) => + public override Func<(IQArray, P), QVoid> __ControlledBody__ => (a) => { Debug.Assert(typeof(O) == typeof(QVoid)); var op = this.BaseOp; var (ctrl, ps) = a; - return op.ControlledBody.Invoke((ctrl, this.Mapper(ps))); + return op.__ControlledBody__.Invoke((ctrl, this.Mapper(ps))); }; - public override Func<(IQArray, P), QVoid> ControlledAdjointBody => (a) => + public override Func<(IQArray, P), QVoid> __ControlledAdjointBody__ => (a) => { Debug.Assert(typeof(O) == typeof(QVoid)); var op = this.BaseOp; var (ctrl, ps) = a; - return op.ControlledAdjointBody.Invoke((ctrl, this.Mapper(ps))); + return op.__ControlledAdjointBody__.Invoke((ctrl, this.Mapper(ps))); }; IEnumerable IApplyData.Qubits => __qubits.Value; diff --git a/src/Simulation/CsharpGeneration/SimulationCode.fs b/src/Simulation/CsharpGeneration/SimulationCode.fs index aa56c7833a9..3b98f619607 100644 --- a/src/Simulation/CsharpGeneration/SimulationCode.fs +++ b/src/Simulation/CsharpGeneration/SimulationCode.fs @@ -1001,10 +1001,10 @@ module SimulationCode = | Generated SelfInverse -> let adjointedBodyName = match sp.Kind with - | QsAdjoint -> "Body" - | QsControlledAdjoint -> "ControlledBody" + | QsAdjoint -> "__Body__" + | QsControlledAdjoint -> "__ControlledBody__" //TODO: diagnostics. - | _ -> "Body" + | _ -> "__Body__" Some (``ident`` adjointedBodyName :> ExpressionSyntax) | _ -> None @@ -1043,7 +1043,7 @@ module SimulationCode = match body with | Some body -> - let bodyName = if bodyName = "Body" then bodyName else bodyName + "Body" + let bodyName = if bodyName = "Body" then "__Body__" else "__" + bodyName + "Body__" let impl = ``property-arrow_get`` propertyType bodyName [``public``; ``override``] ``get`` diff --git a/src/Simulation/QsharpCore/Bitwise/Bitwise.cs b/src/Simulation/QsharpCore/Bitwise/Bitwise.cs index 67e69c8fc72..20bd48d40b1 100644 --- a/src/Simulation/QsharpCore/Bitwise/Bitwise.cs +++ b/src/Simulation/QsharpCore/Bitwise/Bitwise.cs @@ -11,7 +11,7 @@ public partial class Xor public class Native : Xor { public Native(IOperationFactory m) : base(m) { } - public override Func<(long, long), long> Body => (arg) => (arg.Item1 ^ arg.Item2); + public override Func<(long, long), long> __Body__ => (arg) => (arg.Item1 ^ arg.Item2); } } @@ -20,7 +20,7 @@ public partial class And public class Native : And { public Native(IOperationFactory m) : base(m) { } - public override Func<(long, long), long> Body => (arg) => (arg.Item1 & arg.Item2); + public override Func<(long, long), long> __Body__ => (arg) => (arg.Item1 & arg.Item2); } } @@ -29,7 +29,7 @@ public partial class Or public class Native : Or { public Native(IOperationFactory m) : base(m) { } - public override Func<(long, long), long> Body => (arg) => (arg.Item1 | arg.Item2); + public override Func<(long, long), long> __Body__ => (arg) => (arg.Item1 | arg.Item2); } } @@ -38,7 +38,7 @@ public partial class Not public class Native : Not { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => (~arg); + public override Func __Body__ => (arg) => (~arg); } } @@ -57,7 +57,7 @@ static long ParityFunc(long val) } public Native(IOperationFactory m) : base(m) { } - public override Func Body => ParityFunc; + public override Func __Body__ => ParityFunc; } } @@ -81,7 +81,7 @@ static long XBitsFunc(IQArray pauli) } public Native(IOperationFactory m) : base(m) { } - public override Func, long> Body => XBitsFunc; + public override Func, long> __Body__ => XBitsFunc; } } @@ -105,7 +105,7 @@ static long ZBitsFunc(IQArray pauli) } public Native(IOperationFactory m) : base(m) { } - public override Func, long> Body => ZBitsFunc; + public override Func, long> __Body__ => ZBitsFunc; } } } diff --git a/src/Simulation/QsharpCore/Convert/Convert.cs b/src/Simulation/QsharpCore/Convert/Convert.cs index 8fe30c2bc61..a86ac9dfa39 100644 --- a/src/Simulation/QsharpCore/Convert/Convert.cs +++ b/src/Simulation/QsharpCore/Convert/Convert.cs @@ -12,7 +12,7 @@ public partial class IntAsDouble public class Native : IntAsDouble { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Convert.ToDouble(arg); + public override Func __Body__ => (arg) => System.Convert.ToDouble(arg); } } @@ -21,7 +21,7 @@ public partial class IntAsBigInt public class Native : IntAsBigInt { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => new BigInteger(arg); + public override Func __Body__ => (arg) => new BigInteger(arg); } } @@ -43,7 +43,7 @@ public class Native : MaybeBigIntAsInt } public Native(IOperationFactory m) : base(m) { } - public override Func Body => MaybeBigIntAsIntFunc; + public override Func __Body__ => MaybeBigIntAsIntFunc; } } @@ -73,7 +73,7 @@ static IQArray BigIntAsBoolArrayFunc(BigInteger x) } public Native(IOperationFactory m) : base(m) { } - public override Func> Body => BigIntAsBoolArrayFunc; + public override Func> __Body__ => BigIntAsBoolArrayFunc; } } @@ -110,7 +110,7 @@ static BigInteger BoolArrayAsBigIntFunc(IQArray x) } public Native(IOperationFactory m) : base(m) { } - public override Func, BigInteger> Body => BoolArrayAsBigIntFunc; + public override Func, BigInteger> __Body__ => BoolArrayAsBigIntFunc; } } @@ -119,7 +119,7 @@ public partial class BoolAsString public class Native : BoolAsString { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Convert.ToString(arg); + public override Func __Body__ => (arg) => System.Convert.ToString(arg); } } @@ -128,7 +128,7 @@ public partial class DoubleAsString public class Native : DoubleAsString { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Convert.ToString(arg); + public override Func __Body__ => (arg) => System.Convert.ToString(arg); } } @@ -137,7 +137,7 @@ public partial class DoubleAsStringWithFormat public class Native : DoubleAsStringWithFormat { public Native(IOperationFactory m) : base(m) { } - public override Func<(double, string), string> Body => (arg) => arg.Item1.ToString(arg.Item2); + public override Func<(double, string), string> __Body__ => (arg) => arg.Item1.ToString(arg.Item2); } } @@ -146,7 +146,7 @@ public partial class IntAsString public class Native : IntAsString { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Convert.ToString(arg); + public override Func __Body__ => (arg) => System.Convert.ToString(arg); } } @@ -155,7 +155,7 @@ public partial class IntAsStringWithFormat public class Native : IntAsStringWithFormat { public Native(IOperationFactory m) : base(m) { } - public override Func<(long, string), string> Body => (arg) => arg.Item1.ToString(arg.Item2); + public override Func<(long, string), string> __Body__ => (arg) => arg.Item1.ToString(arg.Item2); } } @@ -194,7 +194,7 @@ static long PauliBitsFunc(IQArray pauli) } public Native(IOperationFactory m) : base(m) { } - public override Func, long> Body => PauliBitsFunc; + public override Func, long> __Body__ => PauliBitsFunc; } } } diff --git a/src/Simulation/QsharpCore/Core.cs b/src/Simulation/QsharpCore/Core.cs index 8de6a4b760f..d075f510f49 100644 --- a/src/Simulation/QsharpCore/Core.cs +++ b/src/Simulation/QsharpCore/Core.cs @@ -11,7 +11,7 @@ public partial class Length<__T__> public class Native : Length<__T__> { public Native(IOperationFactory m) : base(m) { } - public override Func, long> Body => (arg) => (arg.Length); + public override Func, long> __Body__ => (arg) => (arg.Length); } } @@ -20,7 +20,7 @@ public partial class RangeStart public class Native : RangeStart { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => (arg.Start); + public override Func __Body__ => (arg) => (arg.Start); } } @@ -29,7 +29,7 @@ public partial class RangeEnd public class Native : RangeEnd { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => (arg.End); + public override Func __Body__ => (arg) => (arg.End); } } @@ -38,7 +38,7 @@ public partial class RangeStep public class Native : RangeStep { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => (arg.Step); + public override Func __Body__ => (arg) => (arg.Step); } } @@ -47,7 +47,7 @@ public partial class RangeReverse public class Native : RangeReverse { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => (arg.Reverse()); + public override Func __Body__ => (arg) => (arg.Reverse()); } } } diff --git a/src/Simulation/QsharpCore/Math/Math.cs b/src/Simulation/QsharpCore/Math/Math.cs index dd1dcbb8673..25e43a1b1ba 100644 --- a/src/Simulation/QsharpCore/Math/Math.cs +++ b/src/Simulation/QsharpCore/Math/Math.cs @@ -12,7 +12,7 @@ public partial class AbsD public class Native : AbsD { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Abs; + public override Func __Body__ => System.Math.Abs; } } @@ -21,7 +21,7 @@ public partial class AbsI public class Native : AbsI { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Abs; + public override Func __Body__ => System.Math.Abs; } } @@ -30,7 +30,7 @@ public partial class AbsL public class Native : AbsL { public Native(IOperationFactory m) : base(m) { } - public override Func Body => BigInteger.Abs; + public override Func __Body__ => BigInteger.Abs; } } @@ -39,7 +39,7 @@ public partial class ArcCos public class Native : ArcCos { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Acos; + public override Func __Body__ => System.Math.Acos; } } @@ -48,7 +48,7 @@ public partial class ArcSin public class Native : ArcSin { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Asin; + public override Func __Body__ => System.Math.Asin; } } @@ -57,7 +57,7 @@ public partial class ArcTan public class Native : ArcTan { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Atan; + public override Func __Body__ => System.Math.Atan; } } @@ -67,7 +67,7 @@ public partial class ArcTan2 public class Native : ArcTan2 { public Native(IOperationFactory m) : base(m) { } - public override Func<(double, double), double> Body => (args) => System.Math.Atan2(args.Item1, args.Item2); + public override Func<(double, double), double> __Body__ => (args) => System.Math.Atan2(args.Item1, args.Item2); } } @@ -76,7 +76,7 @@ public partial class Ceiling public class Native : Ceiling { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Convert.ToInt64(System.Math.Ceiling(arg)); + public override Func __Body__ => (arg) => System.Convert.ToInt64(System.Math.Ceiling(arg)); } } @@ -85,7 +85,7 @@ public partial class Cos public class Native : Cos { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Cos; + public override Func __Body__ => System.Math.Cos; } } @@ -94,7 +94,7 @@ public partial class Cosh public class Native : Cosh { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Cosh; + public override Func __Body__ => System.Math.Cosh; } } @@ -110,7 +110,7 @@ private static (BigInteger, BigInteger) Impl((BigInteger, BigInteger) arg) var div = BigInteger.DivRem(arg.Item1, arg.Item2, out rem); return (div, rem); } - public override Func<(BigInteger, BigInteger), (BigInteger, BigInteger)> Body => Impl; + public override Func<(BigInteger, BigInteger), (BigInteger, BigInteger)> __Body__ => Impl; } } @@ -119,7 +119,7 @@ public partial class E public class Native : E { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Math.E; + public override Func __Body__ => (arg) => System.Math.E; } } @@ -128,7 +128,7 @@ public partial class ExpD public class Native : ExpD { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Exp; + public override Func __Body__ => System.Math.Exp; } } @@ -137,7 +137,7 @@ public partial class Floor public class Native : Floor { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Convert.ToInt64(System.Math.Floor(arg)); + public override Func __Body__ => (arg) => System.Convert.ToInt64(System.Math.Floor(arg)); } } @@ -146,7 +146,7 @@ public partial class IEEERemainder public class Native : IEEERemainder { public Native(IOperationFactory m) : base(m) { } - public override Func<(double, double), double> Body => (arg) => System.Math.IEEERemainder(arg.Item1, arg.Item2); + public override Func<(double, double), double> __Body__ => (arg) => System.Math.IEEERemainder(arg.Item1, arg.Item2); } } @@ -155,7 +155,7 @@ public partial class Log public class Native : Log { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Log; + public override Func __Body__ => System.Math.Log; } } @@ -164,7 +164,7 @@ public partial class Log10 public class Native : Log10 { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Log10; + public override Func __Body__ => System.Math.Log10; } } @@ -173,7 +173,7 @@ public partial class MaxD public class Native : MaxD { public Native(IOperationFactory m) : base(m) { } - public override Func<(double, double), double> Body => (args) => System.Math.Max(args.Item1, args.Item2); + public override Func<(double, double), double> __Body__ => (args) => System.Math.Max(args.Item1, args.Item2); } } @@ -182,7 +182,7 @@ public partial class MaxI public class Native : MaxI { public Native(IOperationFactory m) : base(m) { } - public override Func<(long, long), long> Body => (args) => System.Math.Max(args.Item1, args.Item2); + public override Func<(long, long), long> __Body__ => (args) => System.Math.Max(args.Item1, args.Item2); } } @@ -191,7 +191,7 @@ public partial class MaxL public class Native : MaxL { public Native(IOperationFactory m) : base(m) { } - public override Func<(BigInteger, BigInteger), BigInteger> Body => (args) => BigInteger.Max(args.Item1, args.Item2); + public override Func<(BigInteger, BigInteger), BigInteger> __Body__ => (args) => BigInteger.Max(args.Item1, args.Item2); } } @@ -200,7 +200,7 @@ public partial class MinD public class Native : MinD { public Native(IOperationFactory m) : base(m) { } - public override Func<(double, double), double> Body => (args) => System.Math.Min(args.Item1, args.Item2); + public override Func<(double, double), double> __Body__ => (args) => System.Math.Min(args.Item1, args.Item2); } } @@ -209,7 +209,7 @@ public partial class MinI public class Native : MinI { public Native(IOperationFactory m) : base(m) { } - public override Func<(long, long), long> Body => (args) => System.Math.Min(args.Item1, args.Item2); + public override Func<(long, long), long> __Body__ => (args) => System.Math.Min(args.Item1, args.Item2); } } @@ -218,7 +218,7 @@ public partial class MinL public class Native : MinL { public Native(IOperationFactory m) : base(m) { } - public override Func<(BigInteger, BigInteger), BigInteger> Body => (args) => BigInteger.Min(args.Item1, args.Item2); + public override Func<(BigInteger, BigInteger), BigInteger> __Body__ => (args) => BigInteger.Min(args.Item1, args.Item2); } } @@ -227,7 +227,7 @@ public partial class ModPowL public class Native : ModPowL { public Native(IOperationFactory m) : base(m) { } - public override Func<(BigInteger, BigInteger, BigInteger), BigInteger> Body => (args) => BigInteger.ModPow(args.Item1, args.Item2, args.Item3); + public override Func<(BigInteger, BigInteger, BigInteger), BigInteger> __Body__ => (args) => BigInteger.ModPow(args.Item1, args.Item2, args.Item3); } } @@ -236,7 +236,7 @@ public partial class PI : Function public class Native : PI { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Math.PI; + public override Func __Body__ => (arg) => System.Math.PI; } } @@ -245,7 +245,7 @@ public partial class PowD public class Native : PowD { public Native(IOperationFactory m) : base(m) { } - public override Func<(double, double), double> Body => (arg) => System.Math.Pow(arg.Item1, arg.Item2); + public override Func<(double, double), double> __Body__ => (arg) => System.Math.Pow(arg.Item1, arg.Item2); } } @@ -254,7 +254,7 @@ public partial class Round public class Native : Round { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Convert.ToInt64(System.Math.Round(arg)); + public override Func __Body__ => (arg) => System.Convert.ToInt64(System.Math.Round(arg)); } } @@ -263,7 +263,7 @@ public partial class Sin public class Native : Sin { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (theta) => System.Math.Sin(theta); + public override Func __Body__ => (theta) => System.Math.Sin(theta); } } @@ -272,7 +272,7 @@ public partial class SignD public class Native : SignD { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Math.Sign(arg); + public override Func __Body__ => (arg) => System.Math.Sign(arg); } } @@ -281,7 +281,7 @@ public partial class SignI public class Native : SignI { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Math.Sign(arg); + public override Func __Body__ => (arg) => System.Math.Sign(arg); } } @@ -290,7 +290,7 @@ public partial class SignL public class Native : SignL { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => arg.Sign; + public override Func __Body__ => (arg) => arg.Sign; } } @@ -299,7 +299,7 @@ public partial class Sinh public class Native : Sinh { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (theta) => System.Math.Sinh(theta); + public override Func __Body__ => (theta) => System.Math.Sinh(theta); } } @@ -308,7 +308,7 @@ public partial class Sqrt public class Native : Sqrt { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Math.Sqrt(arg); + public override Func __Body__ => (arg) => System.Math.Sqrt(arg); } } @@ -317,7 +317,7 @@ public partial class Tan public class Native : Tan { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (theta) => System.Math.Tan(theta); + public override Func __Body__ => (theta) => System.Math.Tan(theta); } } @@ -326,7 +326,7 @@ public partial class Tanh public class Native : Tanh { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (theta) => System.Math.Tanh(theta); + public override Func __Body__ => (theta) => System.Math.Tanh(theta); } } @@ -335,7 +335,7 @@ public partial class Truncate public class Native : Truncate { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Convert.ToInt64(System.Math.Truncate(arg)); + public override Func __Body__ => (arg) => System.Convert.ToInt64(System.Math.Truncate(arg)); } } } diff --git a/src/Simulation/Simulators.Tests/Circuits/AssertEqual.cs b/src/Simulation/Simulators.Tests/Circuits/AssertEqual.cs index 960c140c19f..2ce12272593 100644 --- a/src/Simulation/Simulators.Tests/Circuits/AssertEqual.cs +++ b/src/Simulation/Simulators.Tests/Circuits/AssertEqual.cs @@ -13,7 +13,7 @@ public class Native : AssertEqual<__T__> { public Native(IOperationFactory m) : base(m) { } - public override Func<(__T__, __T__), QVoid> Body => (_args) => + public override Func<(__T__, __T__), QVoid> __Body__ => (_args) => { var (expected, actual) = _args; Assert.Equal(expected, actual); diff --git a/src/Simulation/Simulators.Tests/Circuits/NativeOperations.cs b/src/Simulation/Simulators.Tests/Circuits/NativeOperations.cs index 5187e539d4c..f0e63cc9dc1 100644 --- a/src/Simulation/Simulators.Tests/Circuits/NativeOperations.cs +++ b/src/Simulation/Simulators.Tests/Circuits/NativeOperations.cs @@ -20,7 +20,7 @@ public class Native : IntrinsicBody { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => + public override Func __Body__ => (arg) => { return RESULT; }; @@ -34,7 +34,7 @@ public class Native : DefaultBody { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => + public override Func __Body__ => (arg) => { if (this.__Factory__ is QuantumSimulator) { @@ -45,7 +45,7 @@ public Native(IOperationFactory m) : base(m) { } return "Toffoli"; } - return base.Body(arg); + return base.__Body__(arg); }; } } @@ -58,7 +58,7 @@ public class Other1 : IntrinsicBodyGeneric<__T__> { public Other1(IOperationFactory m) : base(m) { } - public override Func<__T__, string> Body => throw new NotImplementedException(); + public override Func<__T__, string> __Body__ => throw new NotImplementedException(); } // This one should not be used, it has the same number of Type parameters, @@ -70,7 +70,7 @@ public class Emulation : IntrinsicBodyGeneric<__T__> { public Emulation(IOperationFactory m) : base(m) { } - public override Func<__T__, string> Body => (arg) => + public override Func<__T__, string> __Body__ => (arg) => { if (arg is string s) { @@ -92,7 +92,7 @@ public class Emulation : DefaultBodyGeneric<__T__> { public Emulation(IOperationFactory m) : base(m) { } - public override Func<__T__, __T__> Body => (arg) => + public override Func<__T__, __T__> __Body__ => (arg) => { if (arg is string s) { @@ -100,7 +100,7 @@ public Emulation(IOperationFactory m) : base(m) { } } else { - return base.Body(arg); + return base.__Body__(arg); } }; } diff --git a/src/Simulation/Simulators.Tests/GetQubitsTests.cs b/src/Simulation/Simulators.Tests/GetQubitsTests.cs index 57fb886eb7b..ffc19827f88 100644 --- a/src/Simulation/Simulators.Tests/GetQubitsTests.cs +++ b/src/Simulation/Simulators.Tests/GetQubitsTests.cs @@ -24,25 +24,25 @@ public UnitaryNoOp() : base(null) { } public override void __Init__() { } - public override Func<(IQArray, TInput), QVoid> ControlledAdjointBody => (arg) => + public override Func<(IQArray, TInput), QVoid> __ControlledAdjointBody__ => (arg) => { Debug.Write("NoOp:ControlledAdjointBody:" + typeof(TInput).FullName); return QVoid.Instance; }; - public override Func AdjointBody => (arg) => + public override Func __AdjointBody__ => (arg) => { Debug.Write("NoOp:AdjointBody:" + typeof(TInput).FullName); return QVoid.Instance; }; - public override Func<(IQArray, TInput), QVoid> ControlledBody => (arg) => + public override Func<(IQArray, TInput), QVoid> __ControlledBody__ => (arg) => { Debug.Write("NoOp:ControlledBody:" + typeof(TInput).FullName); return QVoid.Instance; }; - public override Func Body => (TInput arg) => + public override Func __Body__ => (TInput arg) => { Debug.Write("NoOp:Body:" + typeof(TInput).FullName); return QVoid.Instance; diff --git a/src/Simulation/Simulators.Tests/OperationsTestHelper.cs b/src/Simulation/Simulators.Tests/OperationsTestHelper.cs index 7fa82ca1077..a14adfa3021 100644 --- a/src/Simulation/Simulators.Tests/OperationsTestHelper.cs +++ b/src/Simulation/Simulators.Tests/OperationsTestHelper.cs @@ -103,10 +103,10 @@ public TracerImpl(IOperationFactory m) : base(m) this.Log = new Log(); } - public override Func Body => (tag) => this.Log.Record(OperationFunctor.Body, tag); - public override Func AdjointBody => (tag) => this.Log.Record(OperationFunctor.Adjoint, tag); - public override Func<(IQArray, string), QVoid> ControlledBody => (args) => this.Log.Record(OperationFunctor.Controlled, args.Item2); - public override Func<(IQArray, string), QVoid> ControlledAdjointBody => (args) => this.Log.Record(OperationFunctor.ControlledAdjoint, args.Item2); + public override Func __Body__ => (tag) => this.Log.Record(OperationFunctor.Body, tag); + public override Func __AdjointBody__ => (tag) => this.Log.Record(OperationFunctor.Adjoint, tag); + public override Func<(IQArray, string), QVoid> __ControlledBody__ => (args) => this.Log.Record(OperationFunctor.Controlled, args.Item2); + public override Func<(IQArray, string), QVoid> __ControlledAdjointBody__ => (args) => this.Log.Record(OperationFunctor.ControlledAdjoint, args.Item2); public Log Log { get; } } @@ -118,10 +118,10 @@ public TraceImpl(IOperationFactory m) : base(m) this.Log = new Log(); } - public override Func Body => (tag) => this.Log.Record(OperationFunctor.Body, tag); - public override Func AdjointBody => (tag) => this.Log.Record(OperationFunctor.Adjoint, tag); - public override Func<(IQArray, T), QVoid> ControlledBody => (args) => this.Log.Record(OperationFunctor.Controlled, args.Item2); - public override Func<(IQArray, T), QVoid> ControlledAdjointBody => (args) => this.Log.Record(OperationFunctor.ControlledAdjoint, args.Item2); + public override Func __Body__ => (tag) => this.Log.Record(OperationFunctor.Body, tag); + public override Func __AdjointBody__ => (tag) => this.Log.Record(OperationFunctor.Adjoint, tag); + public override Func<(IQArray, T), QVoid> __ControlledBody__ => (args) => this.Log.Record(OperationFunctor.Controlled, args.Item2); + public override Func<(IQArray, T), QVoid> __ControlledAdjointBody__ => (args) => this.Log.Record(OperationFunctor.ControlledAdjoint, args.Item2); public int GetNumberOfCalls(OperationFunctor functor, T tag) => this.Log.GetNumberOfCalls(functor, tag); diff --git a/src/Simulation/Simulators.Tests/PartialMapperTests.cs b/src/Simulation/Simulators.Tests/PartialMapperTests.cs index 85887b64124..7498a6467ff 100644 --- a/src/Simulation/Simulators.Tests/PartialMapperTests.cs +++ b/src/Simulation/Simulators.Tests/PartialMapperTests.cs @@ -19,7 +19,7 @@ public NoOp(IOperationFactory m) : base(m) { } string ICallable.FullName => "NoOp"; - public override Func Body => (a) => QVoid.Instance; + public override Func __Body__ => (a) => QVoid.Instance; public override void __Init__() { } } diff --git a/src/Simulation/Simulators.Tests/QuantumSimulatorTests/BasicTests.cs b/src/Simulation/Simulators.Tests/QuantumSimulatorTests/BasicTests.cs index 092106269f0..682e35e7630 100644 --- a/src/Simulation/Simulators.Tests/QuantumSimulatorTests/BasicTests.cs +++ b/src/Simulation/Simulators.Tests/QuantumSimulatorTests/BasicTests.cs @@ -62,7 +62,7 @@ public void QSimX() var measure = sim.Get(); var set = sim.Get(); - var ctrlX = x.ControlledBody.AsAction(); + var ctrlX = x.__ControlledBody__.AsAction(); OperationsTestHelper.ctrlTestShell(sim, ctrlX, (enabled, ctrls, q) => { set.Apply((Result.Zero, q)); @@ -70,7 +70,7 @@ public void QSimX() var expected = Result.Zero; Assert.Equal(expected, result); - x.ControlledBody((ctrls, q)); + x.__ControlledBody__((ctrls, q)); result = measure.Apply(q); expected = (enabled) ? Result.One : Result.Zero; Assert.Equal(expected, result); diff --git a/src/Simulation/Simulators.Tests/SimulatorBaseTests.cs b/src/Simulation/Simulators.Tests/SimulatorBaseTests.cs index b96ca6a6b86..84c78044fdb 100644 --- a/src/Simulation/Simulators.Tests/SimulatorBaseTests.cs +++ b/src/Simulation/Simulators.Tests/SimulatorBaseTests.cs @@ -328,9 +328,9 @@ public DummyX(IOperationFactory m) : base(m) { } - public override Func Body => throw new NotImplementedException(); + public override Func __Body__ => throw new NotImplementedException(); - public override Func<(IQArray, Qubit), QVoid> ControlledBody => throw new NotImplementedException(); + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => throw new NotImplementedException(); } /// @@ -343,7 +343,7 @@ public DummyM(IOperationFactory m) : base(m) { } - public override Func Body => throw new NotImplementedException(); + public override Func __Body__ => throw new NotImplementedException(); public override void __Init__() { @@ -368,7 +368,7 @@ public override void __Init__() this.X = this.__Factory__.Get, Intrinsic.X>(); } - public override Func Body => throw new NotImplementedException(); + public override Func __Body__ => throw new NotImplementedException(); } /// @@ -386,13 +386,13 @@ public LikeX(IOperationFactory m) : base(m) public override void __Init__() { } - public override Func<(IQArray, Qubit), QVoid> ControlledAdjointBody => throw new NotImplementedException(); + public override Func<(IQArray, Qubit), QVoid> __ControlledAdjointBody__ => throw new NotImplementedException(); - public override Func AdjointBody => throw new NotImplementedException(); + public override Func __AdjointBody__ => throw new NotImplementedException(); - public override Func<(IQArray, Qubit), QVoid> ControlledBody => throw new NotImplementedException(); + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => throw new NotImplementedException(); - public override Func Body => throw new NotImplementedException(); + public override Func __Body__ => throw new NotImplementedException(); } @@ -414,7 +414,7 @@ public override void __Init__() string ICallable.FullName => "A"; - public override Func Body => (_) => { return QVoid.Instance; }; + public override Func __Body__ => (_) => { return QVoid.Instance; }; } /// @@ -435,7 +435,7 @@ public override void __Init__() this.A = this.__Factory__.Get(); } - public override Func Body => (_) => { return QVoid.Instance; }; + public override Func __Body__ => (_) => { return QVoid.Instance; }; } public class Gen : Operation, ICallable @@ -446,7 +446,7 @@ public Gen(IOperationFactory m) : base(m) string ICallable.FullName => "Gen"; - public override Func Body => (_) => { return QVoid.Instance; }; + public override Func __Body__ => (_) => { return QVoid.Instance; }; public ICallable A { get; set; } @@ -470,7 +470,7 @@ public DependsOnGen(IOperationFactory m) : base(m) public ICallable Gen { get; set; } - public override Func Body => (_) => { return QVoid.Instance; }; + public override Func __Body__ => (_) => { return QVoid.Instance; }; public override void __Init__() { diff --git a/src/Simulation/Simulators.Tests/ToffoliSimulatorTests.cs b/src/Simulation/Simulators.Tests/ToffoliSimulatorTests.cs index 74e031df283..ec72438eb1c 100644 --- a/src/Simulation/Simulators.Tests/ToffoliSimulatorTests.cs +++ b/src/Simulation/Simulators.Tests/ToffoliSimulatorTests.cs @@ -113,12 +113,12 @@ public void ToffoliXCtrl() var measure = sim.Get(); var set = sim.Get(); - var ctrlX = x.ControlledBody.AsAction(); + var ctrlX = x.__ControlledBody__.AsAction(); OperationsTestHelper.ctrlTestShell(sim, ctrlX, (enabled, ctrls, q) => { set.Apply((Result.Zero, q)); - x.ControlledBody((ctrls, q)); + x.__ControlledBody__((ctrls, q)); var result = measure.Apply(q); var expected = (enabled) ? Result.One : Result.Zero; diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.ClassicalControl.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.ClassicalControl.cs index df7d799a8f1..0a3b6614de3 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.ClassicalControl.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.ClassicalControl.cs @@ -123,7 +123,7 @@ public TracerApplyIfElse(QCTraceSimulatorImpl m) : base(m) this.tracerCore = m; } - public override Func<(Result, ICallable, ICallable), QVoid> Body => (q) => + public override Func<(Result, ICallable, ICallable), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Body, null); @@ -139,7 +139,7 @@ public TracerApplyIfElseA(QCTraceSimulatorImpl m) : base(m) this.tracerCore = m; } - public override Func<(Result, IAdjointable, IAdjointable), QVoid> Body => (q) => + public override Func<(Result, IAdjointable, IAdjointable), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Adjoint, null); @@ -155,7 +155,7 @@ public TracerApplyIfElseC(QCTraceSimulatorImpl m) : base(m) this.tracerCore = m; } - public override Func<(IQArray, Result, IControllable, IControllable), QVoid> Body => (q) => + public override Func<(IQArray, Result, IControllable, IControllable), QVoid> __Body__ => (q) => { (IQArray ctrls, Result measurementResult, ICallable onZero, ICallable onOne) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.Controlled, ctrls); @@ -172,7 +172,7 @@ public TracerApplyIfElseCA(QCTraceSimulatorImpl m) : base(m) this.tracerCore = m; } - public override Func<(IQArray, Result, IUnitary, IUnitary), QVoid> Body => (q) => + public override Func<(IQArray, Result, IUnitary, IUnitary), QVoid> __Body__ => (q) => { (IQArray ctrls, Result measurementResult, ICallable onZero, ICallable onOne) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.ControlledAdjoint, ctrls); @@ -193,7 +193,7 @@ public TracerApplyConditionally(QCTraceSimulatorImpl m) : base(m) this.tracerCore = m; } - public override Func<(IQArray, IQArray, ICallable, ICallable), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, ICallable, ICallable), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); @@ -209,7 +209,7 @@ public TracerApplyConditionallyA(QCTraceSimulatorImpl m) : base(m) this.tracerCore = m; } - public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Adjoint, null); @@ -225,7 +225,7 @@ public TracerApplyConditionallyC(QCTraceSimulatorImpl m) : base(m) this.tracerCore = m; } - public override Func<(IQArray, IQArray, IQArray, IControllable, IControllable), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, IQArray, IControllable, IControllable), QVoid> __Body__ => (q) => { (IQArray ctrls, IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.Controlled, ctrls); @@ -242,7 +242,7 @@ public TracerApplyConditionallyCA(QCTraceSimulatorImpl m) : base(m) this.tracerCore = m; } - public override Func<(IQArray, IQArray, IQArray, IUnitary, IUnitary), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, IQArray, IUnitary, IUnitary), QVoid> __Body__ => (q) => { (IQArray ctrls, IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.Controlled, ctrls); diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Diagnostics.Dump.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Diagnostics.Dump.cs index d7f478b1837..2b5b1fd5d34 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Diagnostics.Dump.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Diagnostics.Dump.cs @@ -17,7 +17,7 @@ public TracerDumpMachine(QCTraceSimulatorImpl m) : base(m) core = m; } - public override Func Body => (location) => + public override Func __Body__ => (location) => { if (location == null) { throw new ArgumentNullException(nameof(location)); } var filename = (location is QVoid) ? "" : location.ToString(); @@ -54,7 +54,7 @@ public TracerDumpRegister(QCTraceSimulatorImpl m) : base(m) core = m; } - public override Func<(T, IQArray), QVoid> Body => (__in) => + public override Func<(T, IQArray), QVoid> __Body__ => (__in) => { var (location, qubits) = __in; diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.CX.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.CX.cs index 2482a43281e..beee69de0f7 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.CX.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.CX.cs @@ -15,7 +15,7 @@ public TracerCX(QCTraceSimulatorImpl m) : base(m){ tracerCore = m; } - public override Func<(Qubit, Qubit), QVoid> Body + public override Func<(Qubit, Qubit), QVoid> __Body__ => (arg) => { (Qubit control, Qubit target) = arg; @@ -24,4 +24,4 @@ public TracerCX(QCTraceSimulatorImpl m) : base(m){ }; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.Clifford.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.Clifford.cs index 5c072910b32..c4876d2da46 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.Clifford.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.Clifford.cs @@ -16,7 +16,7 @@ public TracerClifford(QCTraceSimulatorImpl m) : base(m){ tracerCore = m; } - public override Func<(long, Pauli, Qubit), QVoid> Body + public override Func<(long, Pauli, Qubit), QVoid> __Body__ => (arg) => { (long id , Pauli pauli, Qubit target) = arg; @@ -25,4 +25,4 @@ public TracerClifford(QCTraceSimulatorImpl m) : base(m){ }; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.ForceMeasure.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.ForceMeasure.cs index ef48f019ece..6cb50a73c88 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.ForceMeasure.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.ForceMeasure.cs @@ -15,7 +15,7 @@ public TracerForceMeasure(QCTraceSimulatorImpl m) : base(m){ tracerCore = m; } - public override Func<(IQArray, IQArray, Result), QVoid> Body + public override Func<(IQArray, IQArray, Result), QVoid> __Body__ => (arg) => { (IQArray observable, IQArray target, Result result) = arg; @@ -24,4 +24,4 @@ public TracerForceMeasure(QCTraceSimulatorImpl m) : base(m){ }; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.R.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.R.cs index 5015fd6e31f..c847ea0608f 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.R.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.R.cs @@ -17,7 +17,7 @@ public TracerR(QCTraceSimulatorImpl m) : base(m){ } public override Func<(Pauli, double, Qubit), QVoid> - Body => (arg) => + __Body__ => (arg) => { (Pauli axis, double angle, Qubit target) = arg; tracerCore.R(axis, angle, target); @@ -25,4 +25,4 @@ public TracerR(QCTraceSimulatorImpl m) : base(m){ }; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.RFrac.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.RFrac.cs index 1b79a24e643..6a0c7cc1a55 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.RFrac.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.RFrac.cs @@ -16,7 +16,7 @@ public TracerRFrac(QCTraceSimulatorImpl m) : base(m){ tracerCore = m; } - public override Func<(Pauli, long, long, Qubit), QVoid> Body + public override Func<(Pauli, long, long, Qubit), QVoid> __Body__ => (arg) => { (Pauli axis, long numerator, long denomPower, Qubit target) = arg; @@ -25,4 +25,4 @@ public TracerRFrac(QCTraceSimulatorImpl m) : base(m){ }; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.Assert.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.Assert.cs index 71357de0bd7..fe3c66c409c 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.Assert.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.Assert.cs @@ -17,7 +17,7 @@ public TracerAssert(QCTraceSimulatorImpl m) : base(m) core = m.tracingCore; } - public override Func<(IQArray, IQArray, Result, string), QVoid> Body + public override Func<(IQArray, IQArray, Result, string), QVoid> __Body__ => (arg) => { (IQArray observable, IQArray target, Result result, string msg) = arg; @@ -25,11 +25,11 @@ public TracerAssert(QCTraceSimulatorImpl m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, IQArray, Result, string), QVoid> AdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, IQArray, Result, string), QVoid> __AdjointBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> ControlledBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> __ControlledBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> ControlledAdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> __ControlledAdjointBody__ => (_args) => { return QVoid.Instance; }; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.AssertProb.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.AssertProb.cs index 705d5d3ae1d..bcdc7374424 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.AssertProb.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.AssertProb.cs @@ -16,7 +16,7 @@ public TracerAssertProb(QCTraceSimulatorImpl m) : base(m){ core = m.tracingCore; } - public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> Body + public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> __Body__ => (args) => { (IQArray observable, @@ -29,11 +29,11 @@ public TracerAssertProb(QCTraceSimulatorImpl m) : base(m){ return QVoid.Instance; }; - public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> AdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> __AdjointBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> ControlledBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> __ControlledBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> ControlledAdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> __ControlledAdjointBody__ => (_args) => { return QVoid.Instance; }; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.Measure.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.Measure.cs index 50ee25450f2..963c13b25bd 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.Measure.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.Measure.cs @@ -16,7 +16,7 @@ public TracerMeasure(QCTraceSimulatorImpl m) : base(m){ } public override Func<(IQArray, IQArray), Result> - Body => (args) => + __Body__ => (args) => { (IQArray observable, IQArray target) = args; return core.Measure(observable, target); @@ -25,4 +25,4 @@ public TracerMeasure(QCTraceSimulatorImpl m) : base(m){ } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.random.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.random.cs index 14523f44531..61325997347 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.random.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.random.cs @@ -17,7 +17,7 @@ public TracerRandom(QCTraceSimulatorImpl m) : base(m) core = m; } - public override Func, Int64> Body => (p) => + public override Func, Int64> __Body__ => (p) => { return CommonUtils.SampleDistribution(p, core.RandomGenerator.NextDouble()); }; diff --git a/src/Simulation/Simulators/QuantumProcessor/Assert.cs b/src/Simulation/Simulators/QuantumProcessor/Assert.cs index a0badd62007..3af8563429d 100644 --- a/src/Simulation/Simulators/QuantumProcessor/Assert.cs +++ b/src/Simulation/Simulators/QuantumProcessor/Assert.cs @@ -18,7 +18,7 @@ public QuantumProcessorDispatcherAssert(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func<(IQArray, IQArray, Result, string), QVoid> Body => (_args) => + public override Func<(IQArray, IQArray, Result, string), QVoid> __Body__ => (_args) => { (IQArray paulis, IQArray qubits, Result result, string msg) = _args; if (paulis.Length != qubits.Length) @@ -33,11 +33,11 @@ public QuantumProcessorDispatcherAssert(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, IQArray, Result, string), QVoid> AdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, IQArray, Result, string), QVoid> __AdjointBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> ControlledBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> __ControlledBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> ControlledAdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> __ControlledAdjointBody__ => (_args) => { return QVoid.Instance; }; } } } diff --git a/src/Simulation/Simulators/QuantumProcessor/AssertProb.cs b/src/Simulation/Simulators/QuantumProcessor/AssertProb.cs index 9f4d87e085e..0789f86e80b 100644 --- a/src/Simulation/Simulators/QuantumProcessor/AssertProb.cs +++ b/src/Simulation/Simulators/QuantumProcessor/AssertProb.cs @@ -18,7 +18,7 @@ public QuantumProcessorDispatcherAssertProb(QuantumProcessorDispatcher m) : base this.Simulator = m; } - public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> Body => (_args) => + public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> __Body__ => (_args) => { (IQArray paulis, IQArray qubits, Result result, double expectedPr, string msg, double tol) = _args; if (paulis.Length != qubits.Length) @@ -33,11 +33,11 @@ public QuantumProcessorDispatcherAssertProb(QuantumProcessorDispatcher m) : base return QVoid.Instance; }; - public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> AdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> __AdjointBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> ControlledBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> __ControlledBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> ControlledAdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> __ControlledAdjointBody__ => (_args) => { return QVoid.Instance; }; } } } diff --git a/src/Simulation/Simulators/QuantumProcessor/ClassicalControl.cs b/src/Simulation/Simulators/QuantumProcessor/ClassicalControl.cs index 506fb79ac3c..8b19da839c7 100644 --- a/src/Simulation/Simulators/QuantumProcessor/ClassicalControl.cs +++ b/src/Simulation/Simulators/QuantumProcessor/ClassicalControl.cs @@ -89,7 +89,7 @@ public class QuantumProcessorApplyIfElse : Extensions.ApplyIfElseIntrinsic public QuantumProcessorApplyIfElse(QuantumProcessorDispatcher m) : base(m) { this.Simulator = m; } - public override Func<(Result, ICallable, ICallable), QVoid> Body => (q) => + public override Func<(Result, ICallable, ICallable), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(Simulator, measurementResult, Result.Zero, onZero, onOne, OperationFunctor.Body, null); @@ -102,13 +102,13 @@ public class QuantumProcessorApplyIfElseA : Extensions.ApplyIfElseIntrinsicA public QuantumProcessorApplyIfElseA(QuantumProcessorDispatcher m) : base(m) { this.Simulator = m; } - public override Func<(Result, IAdjointable, IAdjointable), QVoid> Body => (q) => + public override Func<(Result, IAdjointable, IAdjointable), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(Simulator, measurementResult, Result.Zero, onZero, onOne, OperationFunctor.Body, null); }; - public override Func<(Result, IAdjointable, IAdjointable), QVoid> AdjointBody => (q) => + public override Func<(Result, IAdjointable, IAdjointable), QVoid> __AdjointBody__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(Simulator, measurementResult, Result.Zero, onZero, onOne, OperationFunctor.Adjoint, null); @@ -121,13 +121,13 @@ public class QuantumProcessorApplyIfElseC : Extensions.ApplyIfElseIntrinsicC public QuantumProcessorApplyIfElseC(QuantumProcessorDispatcher m) : base(m) { this.Simulator = m; } - public override Func<(Result, IControllable, IControllable), QVoid> Body => (q) => + public override Func<(Result, IControllable, IControllable), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(Simulator, measurementResult, Result.Zero, onZero, onOne, OperationFunctor.Body, null); }; - public override Func<(IQArray, (Result, IControllable, IControllable)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (Result, IControllable, IControllable)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (Result measurementResult, ICallable onZero, ICallable onOne)) = q; if ((ctrls == null) || (ctrls.Count == 0)) @@ -147,19 +147,19 @@ public class QuantumProcessorApplyIfElseCA : Extensions.ApplyIfElseIntrinsicCA public QuantumProcessorApplyIfElseCA(QuantumProcessorDispatcher m) : base(m) { this.Simulator = m; } - public override Func<(Result, IUnitary, IUnitary), QVoid> Body => (q) => + public override Func<(Result, IUnitary, IUnitary), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(Simulator, measurementResult, Result.Zero, onZero, onOne, OperationFunctor.Body, null); }; - public override Func<(Result, IUnitary, IUnitary), QVoid> AdjointBody => (q) => + public override Func<(Result, IUnitary, IUnitary), QVoid> __AdjointBody__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(Simulator, measurementResult, Result.Zero, onZero, onOne, OperationFunctor.Adjoint, null); }; - public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (Result measurementResult, ICallable onZero, ICallable onOne)) = q; @@ -173,7 +173,7 @@ public class QuantumProcessorApplyIfElseCA : Extensions.ApplyIfElseIntrinsicCA } }; - public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> ControlledAdjointBody => (q) => + public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> __ControlledAdjointBody__ => (q) => { (IQArray ctrls, (Result measurementResult, ICallable onZero, ICallable onOne)) = q; @@ -196,7 +196,7 @@ public class QuantumProcessorApplyConditionally : Extensions.ApplyConditionallyI public QuantumProcessorApplyConditionally(QuantumProcessorDispatcher m) : base(m) { this.Simulator = m; } - public override Func<(IQArray, IQArray, ICallable, ICallable), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, ICallable, ICallable), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray resultsValues, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(Simulator, measurementResults, resultsValues, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); @@ -209,13 +209,13 @@ public class QuantumProcessorApplyConditionallyA : Extensions.ApplyConditionally public QuantumProcessorApplyConditionallyA(QuantumProcessorDispatcher m) : base(m) { this.Simulator = m; } - public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray resultsValues, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(Simulator, measurementResults, resultsValues, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); }; - public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> AdjointBody => (q) => + public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> __AdjointBody__ => (q) => { (IQArray measurementResults, IQArray resultsValues, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(Simulator, measurementResults, resultsValues, onEqualOp, onNonEqualOp, OperationFunctor.Adjoint, null); @@ -228,13 +228,13 @@ public class QuantumProcessorApplyConditionallyC : Extensions.ApplyConditionally public QuantumProcessorApplyConditionallyC(QuantumProcessorDispatcher m) : base(m) { this.Simulator = m; } - public override Func<(IQArray, IQArray, IControllable, IControllable), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, IControllable, IControllable), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray resultsValues, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(Simulator, measurementResults, resultsValues, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); }; - public override Func<(IQArray, (IQArray, IQArray, IControllable, IControllable)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (IQArray, IQArray, IControllable, IControllable)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (IQArray measurementResults, IQArray resultsValues, ICallable onEqualOp, ICallable onNonEqualOp)) = q; @@ -255,19 +255,19 @@ public class QuantumProcessorApplyConditionallyCA : Extensions.ApplyConditionall public QuantumProcessorApplyConditionallyCA(QuantumProcessorDispatcher m) : base(m) { this.Simulator = m; } - public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray resultsValues, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(Simulator, measurementResults, resultsValues, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); }; - public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> AdjointBody => (q) => + public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> __AdjointBody__ => (q) => { (IQArray measurementResults, IQArray resultsValues, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(Simulator, measurementResults, resultsValues, onEqualOp, onNonEqualOp, OperationFunctor.Adjoint, null); }; - public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (IQArray measurementResults, IQArray resultsValues, ICallable onEqualOp, ICallable onNonEqualOp)) = q; @@ -281,7 +281,7 @@ public class QuantumProcessorApplyConditionallyCA : Extensions.ApplyConditionall } }; - public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> ControlledAdjointBody => (q) => + public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> __ControlledAdjointBody__ => (q) => { (IQArray ctrls, (IQArray measurementResults, IQArray resultsValues, ICallable onEqualOp, ICallable onNonEqualOp)) = q; diff --git a/src/Simulation/Simulators/QuantumProcessor/Dump.cs b/src/Simulation/Simulators/QuantumProcessor/Dump.cs index a0b2ce227f7..5383d0157cc 100644 --- a/src/Simulation/Simulators/QuantumProcessor/Dump.cs +++ b/src/Simulation/Simulators/QuantumProcessor/Dump.cs @@ -17,7 +17,7 @@ public QuantumProcessorDispatcherDumpMachine(QuantumProcessorDispatcher m) : bas this.Simulator = m; } - public override Func Body => (location) => + public override Func __Body__ => (location) => { if (location == null) { throw new ArgumentNullException(nameof(location)); } @@ -36,7 +36,7 @@ public QuantumProcessorDispatcherDumpRegister(QuantumProcessorDispatcher m) : ba this.Simulator = m; } - public override Func<(T, IQArray), QVoid> Body => (__in) => + public override Func<(T, IQArray), QVoid> __Body__ => (__in) => { var (location, qubits) = __in; diff --git a/src/Simulation/Simulators/QuantumProcessor/Exp.cs b/src/Simulation/Simulators/QuantumProcessor/Exp.cs index d714d9d364d..4c871241f65 100644 --- a/src/Simulation/Simulators/QuantumProcessor/Exp.cs +++ b/src/Simulation/Simulators/QuantumProcessor/Exp.cs @@ -18,7 +18,7 @@ public QuantumProcessorDispatcherExp(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func<(IQArray, double, IQArray), QVoid> Body => (_args) => + public override Func<(IQArray, double, IQArray), QVoid> __Body__ => (_args) => { (IQArray paulis, double angle, IQArray qubits) = _args; @@ -35,14 +35,14 @@ public QuantumProcessorDispatcherExp(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, double, IQArray), QVoid> AdjointBody => (_args) => + public override Func<(IQArray, double, IQArray), QVoid> __AdjointBody__ => (_args) => { (IQArray paulis, double angle, IQArray qubits) = _args; - return this.Body.Invoke((paulis, -angle, qubits)); + return this.__Body__.Invoke((paulis, -angle, qubits)); }; - public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, (IQArray paulis, double angle, IQArray qubits)) = _args; @@ -66,11 +66,11 @@ public QuantumProcessorDispatcherExp(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, (IQArray paulis, double angle, IQArray qubits)) = _args; - return this.ControlledBody.Invoke((ctrls, (paulis, -angle, qubits))); + return this.__ControlledBody__.Invoke((ctrls, (paulis, -angle, qubits))); }; } } diff --git a/src/Simulation/Simulators/QuantumProcessor/ExpFrac.cs b/src/Simulation/Simulators/QuantumProcessor/ExpFrac.cs index 7f5438e00d7..f76e657cc01 100644 --- a/src/Simulation/Simulators/QuantumProcessor/ExpFrac.cs +++ b/src/Simulation/Simulators/QuantumProcessor/ExpFrac.cs @@ -15,7 +15,7 @@ public class QuantumProcessorDispatcherExpFrac : Quantum.Intrinsic.ExpFrac public QuantumProcessorDispatcherExpFrac(QuantumProcessorDispatcher m) : base(m) { this.Simulator = m; } - public override Func<(IQArray, long, long, IQArray), QVoid> Body => (_args) => + public override Func<(IQArray, long, long, IQArray), QVoid> __Body__ => (_args) => { (IQArray paulis, long nom, long den, IQArray qubits) = _args; @@ -31,15 +31,15 @@ public class QuantumProcessorDispatcherExpFrac : Quantum.Intrinsic.ExpFrac return QVoid.Instance; }; - public override Func<(IQArray, long, long, IQArray), QVoid> AdjointBody => (_args) => + public override Func<(IQArray, long, long, IQArray), QVoid> __AdjointBody__ => (_args) => { (IQArray paulis, long nom, long den, IQArray qubits) = _args; - return this.Body.Invoke((paulis, -nom, den, qubits)); + return this.__Body__.Invoke((paulis, -nom, den, qubits)); }; public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> - ControlledBody => (_args) => + __ControlledBody__ => (_args) => { (IQArray ctrls, (IQArray paulis, long nom, long den, IQArray qubits)) = _args; @@ -64,11 +64,11 @@ public class QuantumProcessorDispatcherExpFrac : Quantum.Intrinsic.ExpFrac }; public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> - ControlledAdjointBody => (_args) => + __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, (IQArray paulis, long nom, long den, IQArray qubits)) = _args; - return this.ControlledBody.Invoke((ctrls, (paulis, -nom, den, qubits))); + return this.__ControlledBody__.Invoke((ctrls, (paulis, -nom, den, qubits))); }; } } diff --git a/src/Simulation/Simulators/QuantumProcessor/H.cs b/src/Simulation/Simulators/QuantumProcessor/H.cs index 9ded09a1739..55dcff8d113 100644 --- a/src/Simulation/Simulators/QuantumProcessor/H.cs +++ b/src/Simulation/Simulators/QuantumProcessor/H.cs @@ -17,14 +17,14 @@ public QuantumProcessorDispatcherH(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.QuantumProcessor.H(q1); return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (args) => { (IQArray ctrls, Qubit q1) = args; diff --git a/src/Simulation/Simulators/QuantumProcessor/M.cs b/src/Simulation/Simulators/QuantumProcessor/M.cs index adf46ea18ef..f8491f4eb4f 100644 --- a/src/Simulation/Simulators/QuantumProcessor/M.cs +++ b/src/Simulation/Simulators/QuantumProcessor/M.cs @@ -17,7 +17,7 @@ public QuantumProcessorDispatcherM(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func Body => (q) => + public override Func __Body__ => (q) => { return Simulator.QuantumProcessor.M(q); }; diff --git a/src/Simulation/Simulators/QuantumProcessor/Measure.cs b/src/Simulation/Simulators/QuantumProcessor/Measure.cs index fe430df2e16..6b93ead8be5 100644 --- a/src/Simulation/Simulators/QuantumProcessor/Measure.cs +++ b/src/Simulation/Simulators/QuantumProcessor/Measure.cs @@ -18,7 +18,7 @@ public QuantumProcessorDispatcherMeasure(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func<(IQArray, IQArray), Result> Body => (_args) => + public override Func<(IQArray, IQArray), Result> __Body__ => (_args) => { (IQArray paulis, IQArray qubits) = _args; diff --git a/src/Simulation/Simulators/QuantumProcessor/R.cs b/src/Simulation/Simulators/QuantumProcessor/R.cs index 448aab417cf..87ae641a570 100644 --- a/src/Simulation/Simulators/QuantumProcessor/R.cs +++ b/src/Simulation/Simulators/QuantumProcessor/R.cs @@ -19,7 +19,7 @@ public QuantumProcessorDispatcherR(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func<(Pauli, double, Qubit), QVoid> Body => (_args) => + public override Func<(Pauli, double, Qubit), QVoid> __Body__ => (_args) => { (Pauli basis, double angle, Qubit q1) = _args; if (basis != Pauli.PauliI) @@ -29,13 +29,13 @@ public QuantumProcessorDispatcherR(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func<(Pauli, double, Qubit), QVoid> AdjointBody => (_args) => + public override Func<(Pauli, double, Qubit), QVoid> __AdjointBody__ => (_args) => { (Pauli basis, double angle, Qubit q1) = _args; - return this.Body.Invoke((basis, -angle, q1)); + return this.__Body__.Invoke((basis, -angle, q1)); }; - public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, (Pauli basis, double angle, Qubit q1)) = _args; @@ -52,10 +52,10 @@ public QuantumProcessorDispatcherR(QuantumProcessorDispatcher m) : base(m) }; - public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, (Pauli basis, double angle, Qubit q1)) = _args; - return this.ControlledBody.Invoke((ctrls, (basis, -angle, q1))); + return this.__ControlledBody__.Invoke((ctrls, (basis, -angle, q1))); }; } } diff --git a/src/Simulation/Simulators/QuantumProcessor/R1.cs b/src/Simulation/Simulators/QuantumProcessor/R1.cs index 65d3c8570ef..9fb71677223 100644 --- a/src/Simulation/Simulators/QuantumProcessor/R1.cs +++ b/src/Simulation/Simulators/QuantumProcessor/R1.cs @@ -18,20 +18,20 @@ public QuantumProcessorDispatcherR1(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func<(double, Qubit), QVoid> Body => (_args) => + public override Func<(double, Qubit), QVoid> __Body__ => (_args) => { (double angle, Qubit q1) = _args; Simulator.QuantumProcessor.R1(angle, q1); return QVoid.Instance; }; - public override Func<(double, Qubit), QVoid> AdjointBody => (_args) => + public override Func<(double, Qubit), QVoid> __AdjointBody__ => (_args) => { (double angle, Qubit q1) = _args; - return this.Body.Invoke((-angle, q1)); + return this.__Body__.Invoke((-angle, q1)); }; - public override Func<(IQArray, ( double, Qubit)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, ( double, Qubit)), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, (double angle, Qubit q1)) = _args; @@ -48,10 +48,10 @@ public QuantumProcessorDispatcherR1(QuantumProcessorDispatcher m) : base(m) }; - public override Func<(IQArray, (double, Qubit)), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, (double, Qubit)), QVoid> __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, (double angle, Qubit q1)) = _args; - return this.ControlledBody.Invoke((ctrls, (-angle, q1))); + return this.__ControlledBody__.Invoke((ctrls, (-angle, q1))); }; } } diff --git a/src/Simulation/Simulators/QuantumProcessor/R1Frac.cs b/src/Simulation/Simulators/QuantumProcessor/R1Frac.cs index 60a07ff2cbe..99ab7ce0d7f 100644 --- a/src/Simulation/Simulators/QuantumProcessor/R1Frac.cs +++ b/src/Simulation/Simulators/QuantumProcessor/R1Frac.cs @@ -19,7 +19,7 @@ public QuantumProcessorDispatcherR1Frac(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func<(long, long, Qubit), QVoid> Body => (_args) => + public override Func<(long, long, Qubit), QVoid> __Body__ => (_args) => { (long num, long denom, Qubit q1) = _args; (long numNew, long denomNew) = CommonUtils.Reduce(num, denom); @@ -27,13 +27,13 @@ public QuantumProcessorDispatcherR1Frac(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func<(long, long, Qubit), QVoid> AdjointBody => (_args) => + public override Func<(long, long, Qubit), QVoid> __AdjointBody__ => (_args) => { (long num, long denom, Qubit q1) = _args; - return this.Body.Invoke((-num, denom, q1)); + return this.__Body__.Invoke((-num, denom, q1)); }; - public override Func<(IQArray, (long, long, Qubit)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (long, long, Qubit)), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, (long num, long denom, Qubit q1)) = _args; (long numNew, long denomNew) = CommonUtils.Reduce(num, denom); @@ -50,10 +50,10 @@ public QuantumProcessorDispatcherR1Frac(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, (long, long, Qubit)), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, (long, long, Qubit)), QVoid> __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, (long num, long denom, Qubit q1)) = _args; - return this.ControlledBody.Invoke((ctrls, (-num, denom, q1))); + return this.__ControlledBody__.Invoke((ctrls, (-num, denom, q1))); }; } } diff --git a/src/Simulation/Simulators/QuantumProcessor/RFrac.cs b/src/Simulation/Simulators/QuantumProcessor/RFrac.cs index 88d24466659..01d4b0c6621 100644 --- a/src/Simulation/Simulators/QuantumProcessor/RFrac.cs +++ b/src/Simulation/Simulators/QuantumProcessor/RFrac.cs @@ -20,7 +20,7 @@ public QuantumProcessorDispatcherRFrac(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func<(Pauli, long, long, Qubit), QVoid> Body => (_args) => + public override Func<(Pauli, long, long, Qubit), QVoid> __Body__ => (_args) => { (Pauli basis, long num, long denom, Qubit q1) = _args; if (basis != Pauli.PauliI) @@ -31,13 +31,13 @@ public QuantumProcessorDispatcherRFrac(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func<(Pauli, long, long, Qubit), QVoid> AdjointBody => (_args) => + public override Func<(Pauli, long, long, Qubit), QVoid> __AdjointBody__ => (_args) => { (Pauli basis, long num, long denom, Qubit q1) = _args; - return this.Body.Invoke((basis, -num, denom, q1)); + return this.__Body__.Invoke((basis, -num, denom, q1)); }; - public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, (Pauli basis, long num, long denom, Qubit q1)) = _args; (long numNew, long denomNew) = CommonUtils.Reduce(num, denom); @@ -54,10 +54,10 @@ public QuantumProcessorDispatcherRFrac(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, (Pauli basis, long num, long denom, Qubit q1)) = _args; - return this.ControlledBody.Invoke((ctrls, (basis, -num, denom, q1))); + return this.__ControlledBody__.Invoke((ctrls, (basis, -num, denom, q1))); }; } } diff --git a/src/Simulation/Simulators/QuantumProcessor/Reset.cs b/src/Simulation/Simulators/QuantumProcessor/Reset.cs index 4ebee59437a..b7511af1995 100644 --- a/src/Simulation/Simulators/QuantumProcessor/Reset.cs +++ b/src/Simulation/Simulators/QuantumProcessor/Reset.cs @@ -17,7 +17,7 @@ public QuantumProcessorDispatcherReset(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.QuantumProcessor.Reset(q1); return QVoid.Instance; diff --git a/src/Simulation/Simulators/QuantumProcessor/S.cs b/src/Simulation/Simulators/QuantumProcessor/S.cs index c9081b09345..aa9c891ef16 100644 --- a/src/Simulation/Simulators/QuantumProcessor/S.cs +++ b/src/Simulation/Simulators/QuantumProcessor/S.cs @@ -17,13 +17,13 @@ public QuantumProcessorDispatcherS(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.QuantumProcessor.S(q1); return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; @@ -39,13 +39,13 @@ public QuantumProcessorDispatcherS(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func AdjointBody => (q1) => + public override Func __AdjointBody__ => (q1) => { Simulator.QuantumProcessor.SAdjoint(q1); return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; diff --git a/src/Simulation/Simulators/QuantumProcessor/SWAP.cs b/src/Simulation/Simulators/QuantumProcessor/SWAP.cs index 98fe3d1347e..39ce5592307 100644 --- a/src/Simulation/Simulators/QuantumProcessor/SWAP.cs +++ b/src/Simulation/Simulators/QuantumProcessor/SWAP.cs @@ -17,13 +17,13 @@ public QuantumProcessorDispatcherSWAP(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func<(Qubit,Qubit), QVoid> Body => (q1) => + public override Func<(Qubit,Qubit), QVoid> __Body__ => (q1) => { Simulator.QuantumProcessor.SWAP(q1.Item1, q1.Item2); return QVoid.Instance; }; - public override Func<(IQArray, (Qubit, Qubit)), QVoid> ControlledBody => (args) => + public override Func<(IQArray, (Qubit, Qubit)), QVoid> __ControlledBody__ => (args) => { (IQArray ctrls, (Qubit q1, Qubit q2) ) = args; diff --git a/src/Simulation/Simulators/QuantumProcessor/T.cs b/src/Simulation/Simulators/QuantumProcessor/T.cs index 440e82677bf..1960e0fc35c 100644 --- a/src/Simulation/Simulators/QuantumProcessor/T.cs +++ b/src/Simulation/Simulators/QuantumProcessor/T.cs @@ -17,13 +17,13 @@ public QuantumProcessorDispatcherT(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.QuantumProcessor.T(q1); return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; @@ -32,13 +32,13 @@ public QuantumProcessorDispatcherT(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func AdjointBody => (q1) => + public override Func __AdjointBody__ => (q1) => { Simulator.QuantumProcessor.TAdjoint(q1); return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; diff --git a/src/Simulation/Simulators/QuantumProcessor/X.cs b/src/Simulation/Simulators/QuantumProcessor/X.cs index e9e3c7b7b73..db46166c238 100644 --- a/src/Simulation/Simulators/QuantumProcessor/X.cs +++ b/src/Simulation/Simulators/QuantumProcessor/X.cs @@ -17,13 +17,13 @@ public QuantumProcessorDispatcherX(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.QuantumProcessor.X(q1); return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (args) => { (IQArray ctrls, Qubit q1) = args; diff --git a/src/Simulation/Simulators/QuantumProcessor/Y.cs b/src/Simulation/Simulators/QuantumProcessor/Y.cs index 271f6872750..e8418cdd5e7 100644 --- a/src/Simulation/Simulators/QuantumProcessor/Y.cs +++ b/src/Simulation/Simulators/QuantumProcessor/Y.cs @@ -17,13 +17,13 @@ public QuantumProcessorDispatcherY(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.QuantumProcessor.Y(q1); return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; diff --git a/src/Simulation/Simulators/QuantumProcessor/Z.cs b/src/Simulation/Simulators/QuantumProcessor/Z.cs index e4fc24859ba..36d6c537a99 100644 --- a/src/Simulation/Simulators/QuantumProcessor/Z.cs +++ b/src/Simulation/Simulators/QuantumProcessor/Z.cs @@ -17,13 +17,13 @@ public QuantumProcessorDispatcherZ(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.QuantumProcessor.Z(q1); return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; diff --git a/src/Simulation/Simulators/QuantumProcessor/random.cs b/src/Simulation/Simulators/QuantumProcessor/random.cs index 4badfd98802..407db21dc8d 100644 --- a/src/Simulation/Simulators/QuantumProcessor/random.cs +++ b/src/Simulation/Simulators/QuantumProcessor/random.cs @@ -18,7 +18,7 @@ public QuantumProcessorDispatcherRandom(QuantumProcessorDispatcher m) : base(m) Simulator = m; } - public override Func, Int64> Body => (p) => + public override Func, Int64> __Body__ => (p) => { return CommonUtils.SampleDistribution(p, Simulator.RandomGenerator.NextDouble()); }; diff --git a/src/Simulation/Simulators/QuantumSimulator/Assert.cs b/src/Simulation/Simulators/QuantumSimulator/Assert.cs index 69d1b035d69..917a4c16053 100644 --- a/src/Simulation/Simulators/QuantumSimulator/Assert.cs +++ b/src/Simulation/Simulators/QuantumSimulator/Assert.cs @@ -24,7 +24,7 @@ public QSimAssert(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(IQArray, IQArray, Result, string), QVoid> Body => (_args) => + public override Func<(IQArray, IQArray, Result, string), QVoid> __Body__ => (_args) => { var (paulis, qubits, result, msg) = _args; @@ -50,11 +50,11 @@ public QSimAssert(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, IQArray, Result, string), QVoid> AdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, IQArray, Result, string), QVoid> __AdjointBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> ControlledBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> __ControlledBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> ControlledAdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> __ControlledAdjointBody__ => (_args) => { return QVoid.Instance; }; } } } diff --git a/src/Simulation/Simulators/QuantumSimulator/AssertProb.cs b/src/Simulation/Simulators/QuantumSimulator/AssertProb.cs index 39e3901e592..2e3550bfd25 100644 --- a/src/Simulation/Simulators/QuantumSimulator/AssertProb.cs +++ b/src/Simulation/Simulators/QuantumSimulator/AssertProb.cs @@ -25,7 +25,7 @@ public QSimAssertProb(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> Body => (_args) => + public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> __Body__ => (_args) => { var (paulis, qubits, result, expectedPr, msg, tol) = _args; @@ -68,11 +68,11 @@ public QSimAssertProb(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> AdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> __AdjointBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> ControlledBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> __ControlledBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> ControlledAdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> __ControlledAdjointBody__ => (_args) => { return QVoid.Instance; }; } } } diff --git a/src/Simulation/Simulators/QuantumSimulator/ClassicalControl.cs b/src/Simulation/Simulators/QuantumSimulator/ClassicalControl.cs index 6ebb57e15dd..c86e5abe4f0 100644 --- a/src/Simulation/Simulators/QuantumSimulator/ClassicalControl.cs +++ b/src/Simulation/Simulators/QuantumSimulator/ClassicalControl.cs @@ -122,7 +122,7 @@ public QSimApplyIfElse(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(Result, ICallable, ICallable), QVoid> Body => (q) => + public override Func<(Result, ICallable, ICallable), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Body, null); @@ -138,13 +138,13 @@ public QSimApplyIfElseA(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(Result, IAdjointable, IAdjointable), QVoid> Body => (q) => + public override Func<(Result, IAdjointable, IAdjointable), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Body, null); }; - public override Func<(Result, IAdjointable, IAdjointable), QVoid> AdjointBody => (q) => + public override Func<(Result, IAdjointable, IAdjointable), QVoid> __AdjointBody__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Adjoint, null); @@ -160,13 +160,13 @@ public QSimApplyIfElseC(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(Result, IControllable, IControllable), QVoid> Body => (q) => + public override Func<(Result, IControllable, IControllable), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Body, null); }; - public override Func<(IQArray, (Result, IControllable, IControllable)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (Result, IControllable, IControllable)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (Result measurementResult, ICallable onZero, ICallable onOne)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.Controlled, ctrls); @@ -183,26 +183,26 @@ public QSimApplyIfElseCA(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(Result, IUnitary, IUnitary), QVoid> Body => (q) => + public override Func<(Result, IUnitary, IUnitary), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Body, null); }; - public override Func<(Result, IUnitary, IUnitary), QVoid> AdjointBody => (q) => + public override Func<(Result, IUnitary, IUnitary), QVoid> __AdjointBody__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Adjoint, null); }; - public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (Result measurementResult, ICallable onZero, ICallable onOne)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.Controlled, ctrls); return ExecuteConditionalStatement(measurementResult, onZero, onOne, type, ctrls); }; - public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> ControlledAdjointBody => (q) => + public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> __ControlledAdjointBody__ => (q) => { (IQArray ctrls, (Result measurementResult, ICallable onZero, ICallable onOne)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.ControlledAdjoint, ctrls); @@ -223,7 +223,7 @@ public QSimApplyConditionally(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(IQArray, IQArray, ICallable, ICallable), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, ICallable, ICallable), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); @@ -239,13 +239,13 @@ public QSimApplyConditionallyA(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); }; - public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> AdjointBody => (q) => + public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> __AdjointBody__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Adjoint, null); @@ -261,13 +261,13 @@ public QSimApplyConditionallyC(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(IQArray, IQArray, IControllable, IControllable), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, IControllable, IControllable), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); }; - public override Func<(IQArray, (IQArray, IQArray, IControllable, IControllable)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (IQArray, IQArray, IControllable, IControllable)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.Controlled, ctrls); @@ -284,26 +284,26 @@ public QSimApplyConditionallyCA(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); }; - public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> AdjointBody => (q) => + public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> __AdjointBody__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Adjoint, null); }; - public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.Controlled, ctrls); return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, type, ctrls); }; - public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> ControlledAdjointBody => (q) => + public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> __ControlledAdjointBody__ => (q) => { (IQArray ctrls, (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.ControlledAdjoint, ctrls); diff --git a/src/Simulation/Simulators/QuantumSimulator/Dump.cs b/src/Simulation/Simulators/QuantumSimulator/Dump.cs index 5845114baf4..5cd3a4dd2a3 100644 --- a/src/Simulation/Simulators/QuantumSimulator/Dump.cs +++ b/src/Simulation/Simulators/QuantumSimulator/Dump.cs @@ -73,7 +73,7 @@ public QsimDumpMachine(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func Body => (location) => + public override Func __Body__ => (location) => { if (location == null) { throw new ArgumentNullException(nameof(location)); } @@ -91,7 +91,7 @@ public QSimDumpRegister(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(T, IQArray), QVoid> Body => (__in) => + public override Func<(T, IQArray), QVoid> __Body__ => (__in) => { var (location, qubits) = __in; diff --git a/src/Simulation/Simulators/QuantumSimulator/Exp.cs b/src/Simulation/Simulators/QuantumSimulator/Exp.cs index 10559904cef..00f495f368e 100644 --- a/src/Simulation/Simulators/QuantumSimulator/Exp.cs +++ b/src/Simulation/Simulators/QuantumSimulator/Exp.cs @@ -26,7 +26,7 @@ public QSimExp(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(IQArray, double, IQArray), QVoid> Body => (_args) => + public override Func<(IQArray, double, IQArray), QVoid> __Body__ => (_args) => { var (paulis, theta, qubits) = _args; @@ -43,14 +43,14 @@ public QSimExp(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, double, IQArray), QVoid> AdjointBody => (_args) => + public override Func<(IQArray, double, IQArray), QVoid> __AdjointBody__ => (_args) => { var (paulis, angle, qubits) = _args; - return this.Body.Invoke((paulis, -angle, qubits)); + return this.__Body__.Invoke((paulis, -angle, qubits)); }; - public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> __ControlledBody__ => (_args) => { var (ctrls, (paulis, angle, qubits)) = _args; @@ -63,17 +63,17 @@ public QSimExp(QuantumSimulator m) : base(m) } SafeControlled(ctrls, - () => this.Body.Invoke((paulis, angle, qubits)), + () => this.__Body__.Invoke((paulis, angle, qubits)), (count, ids) => MCExp(Simulator.Id, (uint)paulis.Length, paulis.ToArray(), angle, count, ids, qubits.GetIds())); return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> __ControlledAdjointBody__ => (_args) => { var (ctrls, (paulis, angle, qubits)) = _args; - return this.ControlledBody.Invoke((ctrls, (paulis, -angle, qubits))); + return this.__ControlledBody__.Invoke((ctrls, (paulis, -angle, qubits))); }; } } diff --git a/src/Simulation/Simulators/QuantumSimulator/ExpFrac.cs b/src/Simulation/Simulators/QuantumSimulator/ExpFrac.cs index cc1a18b25a6..446ac3c2efb 100644 --- a/src/Simulation/Simulators/QuantumSimulator/ExpFrac.cs +++ b/src/Simulation/Simulators/QuantumSimulator/ExpFrac.cs @@ -19,28 +19,28 @@ public QSimExpFrac(QuantumSimulator m) : base(m) public static double Angle(long numerator, long power) => (System.Math.PI * numerator) / (1 << (int)power); - public override Func<(IQArray, long, long, IQArray), QVoid> Body => (args) => + public override Func<(IQArray, long, long, IQArray), QVoid> __Body__ => (args) => { var (paulis, numerator, power, qubits) = args; var angle = Angle(numerator, power); return Exp.Apply((paulis, angle, qubits)); }; - public override Func<(IQArray, long, long, IQArray), QVoid> AdjointBody => (args) => + public override Func<(IQArray, long, long, IQArray), QVoid> __AdjointBody__ => (args) => { var (paulis, numerator, power, qubits) = args; var angle = Angle(numerator, power); return Exp.Adjoint.Apply((paulis, angle, qubits)); }; - public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> ControlledBody => (args) => + public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> __ControlledBody__ => (args) => { var (ctrls, (paulis, numerator, power, qubits)) = args; var angle = Angle(numerator, power); return Exp.Controlled.Apply((ctrls, (paulis, angle, qubits))); }; - public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> ControlledAdjointBody => (args) => + public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> __ControlledAdjointBody__ => (args) => { var (ctrls, (paulis, numerator, power, qubits)) = args; var angle = Angle(numerator, power); diff --git a/src/Simulation/Simulators/QuantumSimulator/H.cs b/src/Simulation/Simulators/QuantumSimulator/H.cs index 86d70eec1f2..fc2b0a89d4d 100644 --- a/src/Simulation/Simulators/QuantumSimulator/H.cs +++ b/src/Simulation/Simulators/QuantumSimulator/H.cs @@ -25,7 +25,7 @@ public QSimH(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.CheckQubit(q1); @@ -35,7 +35,7 @@ public QSimH(QuantumSimulator m) : base(m) }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (args) => { var (ctrls, q1) = args; diff --git a/src/Simulation/Simulators/QuantumSimulator/M.cs b/src/Simulation/Simulators/QuantumSimulator/M.cs index 6f2766ea333..2b4fee0874d 100644 --- a/src/Simulation/Simulators/QuantumSimulator/M.cs +++ b/src/Simulation/Simulators/QuantumSimulator/M.cs @@ -24,7 +24,7 @@ public QSimM(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func Body => (q) => + public override Func __Body__ => (q) => { Simulator.CheckQubit(q); //setting qubit as measured to allow for release diff --git a/src/Simulation/Simulators/QuantumSimulator/Measure.cs b/src/Simulation/Simulators/QuantumSimulator/Measure.cs index 40661c9b4d9..25eb5caed95 100644 --- a/src/Simulation/Simulators/QuantumSimulator/Measure.cs +++ b/src/Simulation/Simulators/QuantumSimulator/Measure.cs @@ -22,7 +22,7 @@ public QSimMeasure(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(IQArray, IQArray), Result> Body => (_args) => + public override Func<(IQArray, IQArray), Result> __Body__ => (_args) => { var (paulis, qubits) = _args; diff --git a/src/Simulation/Simulators/QuantumSimulator/R.cs b/src/Simulation/Simulators/QuantumSimulator/R.cs index f69f78de43c..0d8e395f730 100644 --- a/src/Simulation/Simulators/QuantumSimulator/R.cs +++ b/src/Simulation/Simulators/QuantumSimulator/R.cs @@ -26,7 +26,7 @@ public QSimR(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(Pauli, double, Qubit), QVoid> Body => (_args) => + public override Func<(Pauli, double, Qubit), QVoid> __Body__ => (_args) => { var (basis, angle, q1) = _args; @@ -38,14 +38,14 @@ public QSimR(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(Pauli, double, Qubit), QVoid> AdjointBody => (_args) => + public override Func<(Pauli, double, Qubit), QVoid> __AdjointBody__ => (_args) => { var (basis, angle, q1) = _args; - return this.Body.Invoke((basis, -angle, q1)); + return this.__Body__.Invoke((basis, -angle, q1)); }; - public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> __ControlledBody__ => (_args) => { var (ctrls, (basis, angle, q1)) = _args; @@ -53,18 +53,18 @@ public QSimR(QuantumSimulator m) : base(m) CheckAngle(angle); SafeControlled(ctrls, - () => this.Body.Invoke((basis, angle, q1)), + () => this.__Body__.Invoke((basis, angle, q1)), (count, ids) => MCR(Simulator.Id, basis, angle, count, ids, (uint)q1.Id)); return QVoid.Instance; }; - public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> __ControlledAdjointBody__ => (_args) => { var (ctrls, (basis, angle, q1)) = _args; - return this.ControlledBody.Invoke((ctrls, (basis, -angle, q1))); + return this.__ControlledBody__.Invoke((ctrls, (basis, -angle, q1))); }; } } diff --git a/src/Simulation/Simulators/QuantumSimulator/RFrac.cs b/src/Simulation/Simulators/QuantumSimulator/RFrac.cs index 0d84cea50bf..65045d68816 100644 --- a/src/Simulation/Simulators/QuantumSimulator/RFrac.cs +++ b/src/Simulation/Simulators/QuantumSimulator/RFrac.cs @@ -19,28 +19,28 @@ public QSimRFrac(QuantumSimulator m) : base(m) public static double Angle(long numerator, long power) => (-2.0 * System.Math.PI * numerator) / (1 << (int)power); - public override Func<(Pauli, long, long, Qubit), QVoid> Body => (args) => + public override Func<(Pauli, long, long, Qubit), QVoid> __Body__ => (args) => { var (pauli, numerator, power, qubit) = args; var angle = Angle(numerator, power); return R.Apply((pauli, angle, qubit)); }; - public override Func<(Pauli, long, long, Qubit), QVoid> AdjointBody => (args) => + public override Func<(Pauli, long, long, Qubit), QVoid> __AdjointBody__ => (args) => { var (pauli, numerator, power, qubit) = args; var angle = Angle(numerator, power); return R.Adjoint.Apply((pauli, angle, qubit)); }; - public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> ControlledBody => (args) => + public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> __ControlledBody__ => (args) => { var (ctrls, (pauli, numerator, power, qubit)) = args; var angle = Angle(numerator, power); return R.Controlled.Apply((ctrls, (pauli, angle, qubit))); }; - public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> ControlledAdjointBody => (args) => + public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> __ControlledAdjointBody__ => (args) => { var (ctrls, (pauli, numerator, power, qubit)) = args; var angle = Angle(numerator, power); diff --git a/src/Simulation/Simulators/QuantumSimulator/S.cs b/src/Simulation/Simulators/QuantumSimulator/S.cs index 39cd9c8dd1e..a77f5bc6b0e 100644 --- a/src/Simulation/Simulators/QuantumSimulator/S.cs +++ b/src/Simulation/Simulators/QuantumSimulator/S.cs @@ -31,7 +31,7 @@ public QSimS(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.CheckQubit(q1); @@ -40,7 +40,7 @@ public QSimS(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; @@ -53,7 +53,7 @@ public QSimS(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func AdjointBody => (q1) => + public override Func __AdjointBody__ => (q1) => { Simulator.CheckQubit(q1); @@ -62,14 +62,14 @@ public QSimS(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; Simulator.CheckQubits(ctrls, q1); SafeControlled(ctrls, - () => this.AdjointBody(q1), + () => this.__AdjointBody__(q1), (count, ids) => MCAdjS(Simulator.Id, count, ids, (uint)q1.Id)); return QVoid.Instance; diff --git a/src/Simulation/Simulators/QuantumSimulator/T.cs b/src/Simulation/Simulators/QuantumSimulator/T.cs index cee2a5c90ce..201c8112b51 100644 --- a/src/Simulation/Simulators/QuantumSimulator/T.cs +++ b/src/Simulation/Simulators/QuantumSimulator/T.cs @@ -31,7 +31,7 @@ public QSimT(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.CheckQubit(q1); @@ -39,7 +39,7 @@ public QSimT(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; @@ -52,7 +52,7 @@ public QSimT(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func AdjointBody => (q1) => + public override Func __AdjointBody__ => (q1) => { Simulator.CheckQubit(q1); @@ -60,14 +60,14 @@ public QSimT(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; Simulator.CheckQubits(ctrls, q1); SafeControlled(ctrls, - () => this.AdjointBody(q1), + () => this.__AdjointBody__(q1), (count, ids) => MCAdjT(Simulator.Id, count, ids, (uint)q1.Id)); return QVoid.Instance; diff --git a/src/Simulation/Simulators/QuantumSimulator/X.cs b/src/Simulation/Simulators/QuantumSimulator/X.cs index d461289848a..9b23f4c6372 100644 --- a/src/Simulation/Simulators/QuantumSimulator/X.cs +++ b/src/Simulation/Simulators/QuantumSimulator/X.cs @@ -25,7 +25,7 @@ public QSimX(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.CheckQubit(q1); @@ -34,7 +34,7 @@ public QSimX(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (args) => { var (ctrls, q1) = args; diff --git a/src/Simulation/Simulators/QuantumSimulator/Y.cs b/src/Simulation/Simulators/QuantumSimulator/Y.cs index a3755ce3b5f..1144f966db8 100644 --- a/src/Simulation/Simulators/QuantumSimulator/Y.cs +++ b/src/Simulation/Simulators/QuantumSimulator/Y.cs @@ -25,7 +25,7 @@ public QSimY(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.CheckQubit(q1); @@ -34,7 +34,7 @@ public QSimY(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; diff --git a/src/Simulation/Simulators/QuantumSimulator/Z.cs b/src/Simulation/Simulators/QuantumSimulator/Z.cs index 962b5a58b4a..e046c233a5c 100644 --- a/src/Simulation/Simulators/QuantumSimulator/Z.cs +++ b/src/Simulation/Simulators/QuantumSimulator/Z.cs @@ -25,7 +25,7 @@ public QSimZ(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.CheckQubit(q1); ; @@ -34,7 +34,7 @@ public QSimZ(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; diff --git a/src/Simulation/Simulators/QuantumSimulator/random.cs b/src/Simulation/Simulators/QuantumSimulator/random.cs index d93a3b363e0..d1bc39e27a9 100644 --- a/src/Simulation/Simulators/QuantumSimulator/random.cs +++ b/src/Simulation/Simulators/QuantumSimulator/random.cs @@ -22,7 +22,7 @@ public QSimrandom(QuantumSimulator m) : base(m) this.SimulatorId = m.Id; } - public override Func, Int64> Body => (p) => + public override Func, Int64> __Body__ => (p) => { return random_choice(this.SimulatorId, p.Length, p.ToArray()); }; diff --git a/src/Simulation/Simulators/ToffoliSimulator/Assert.cs b/src/Simulation/Simulators/ToffoliSimulator/Assert.cs index 13c71ead4d9..aaa7943bb08 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/Assert.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/Assert.cs @@ -28,7 +28,7 @@ public Assert(ToffoliSimulator m) : base(m) /// /// The implementation of the operation. /// - public override Func<(IQArray, IQArray, Result, string), QVoid> Body => (_args) => + public override Func<(IQArray, IQArray, Result, string), QVoid> __Body__ => (_args) => { Qubit? f(Pauli p, Qubit q) => p switch { @@ -60,19 +60,19 @@ public Assert(ToffoliSimulator m) : base(m) /// The implementation of the adjoint specialization of the operation. /// The current definition is that this is a no-op. /// - public override Func<(IQArray, IQArray, Result, string), QVoid> AdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, IQArray, Result, string), QVoid> __AdjointBody__ => (_args) => { return QVoid.Instance; }; /// /// The implementation of the controlled specialization of the operation. /// The current definition is that this is a no-op. /// - public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> ControlledBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> __ControlledBody__ => (_args) => { return QVoid.Instance; }; /// /// The implementation of the controlled adjoint specialization of the operation. /// The current definition is that this is a no-op. /// - public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> ControlledAdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> __ControlledAdjointBody__ => (_args) => { return QVoid.Instance; }; } } } diff --git a/src/Simulation/Simulators/ToffoliSimulator/AssertProb.cs b/src/Simulation/Simulators/ToffoliSimulator/AssertProb.cs index 3ed31f98369..edb6ca540ce 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/AssertProb.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/AssertProb.cs @@ -29,7 +29,7 @@ public AssertProb(ToffoliSimulator m) : base(m) /// /// The implementation of the operation. /// - public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> Body => (_args) => + public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> __Body__ => (_args) => { Qubit? f(Pauli p, Qubit q) => @@ -82,19 +82,19 @@ public AssertProb(ToffoliSimulator m) : base(m) /// The implementation of the adjoint specialization of the operation. /// The current definition is that this is a no-op. /// - public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> AdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> __AdjointBody__ => (_args) => { return QVoid.Instance; }; /// /// The implementation of the controlled specialization of the operation. /// The current definition is that this is a no-op. /// - public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> ControlledBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> __ControlledBody__ => (_args) => { return QVoid.Instance; }; /// /// The implementation of the controlled adjoint specialization of the operation. /// The current definition is that this is a no-op. /// - public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> ControlledAdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> __ControlledAdjointBody__ => (_args) => { return QVoid.Instance; }; } } } diff --git a/src/Simulation/Simulators/ToffoliSimulator/Dump.cs b/src/Simulation/Simulators/ToffoliSimulator/Dump.cs index fe1e9446136..aec28a147aa 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/Dump.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/Dump.cs @@ -29,7 +29,7 @@ public DumpMachine(ToffoliSimulator m) : base(m) /// /// The implementation of the operation. /// - public override Func Body => (location) => + public override Func __Body__ => (location) => { if (location == null) { throw new ArgumentNullException(nameof(location)); } @@ -60,7 +60,7 @@ public DumpRegister(ToffoliSimulator m) : base(m) /// /// The implementation of the operation. /// - public override Func<(T, IQArray), QVoid> Body => (__in) => + public override Func<(T, IQArray), QVoid> __Body__ => (__in) => { var (location, qubits) = __in; diff --git a/src/Simulation/Simulators/ToffoliSimulator/Exp.cs b/src/Simulation/Simulators/ToffoliSimulator/Exp.cs index 2958414470b..4b6cdd4dd6e 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/Exp.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/Exp.cs @@ -29,7 +29,7 @@ public Exp(ToffoliSimulator m) : base(m) /// For the Toffoli simulator, the implementation flips a target qubit /// if the respective rotation is effectively an X gate. /// - public override Func<(IQArray, double, IQArray), QVoid> Body => (_args) => + public override Func<(IQArray, double, IQArray), QVoid> __Body__ => (_args) => { var (bases, angle, qubits) = _args; @@ -58,7 +58,7 @@ public Exp(ToffoliSimulator m) : base(m) /// The implementation of the adjoint specialization of the operation. /// For the Toffoli simulator *only*, this operation is self-adjoint. /// - public override Func<(IQArray, double, IQArray), QVoid> AdjointBody => Body; + public override Func<(IQArray, double, IQArray), QVoid> __AdjointBody__ => __Body__; /// /// The implementation of the controlled specialization of the operation. @@ -66,7 +66,7 @@ public Exp(ToffoliSimulator m) : base(m) /// if the rotation is effectively an X gate and all of the control qubits /// are in the One state. /// - public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> __ControlledBody__ => (_args) => { var (ctrls, (bases, angle, qubits)) = _args; @@ -96,7 +96,7 @@ public Exp(ToffoliSimulator m) : base(m) /// The implementation of the controlled adjoint specialization of the operation. /// For the Toffoli simulator *only*, the controlled specialization is self-adjoint. /// - public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> ControlledAdjointBody => ControlledBody; + public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> __ControlledAdjointBody__ => __ControlledBody__; } } } diff --git a/src/Simulation/Simulators/ToffoliSimulator/ExpFrac.cs b/src/Simulation/Simulators/ToffoliSimulator/ExpFrac.cs index e7d3d200804..0d14f2fb29e 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/ExpFrac.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/ExpFrac.cs @@ -30,7 +30,7 @@ public ExpFrac(ToffoliSimulator m) : base(m) /// For the Toffoli simulator, the implementation flips a target qubit /// if the respective rotation is effectively an X gate. /// - public override Func<(IQArray, long, long, IQArray), QVoid> Body => (_args) => + public override Func<(IQArray, long, long, IQArray), QVoid> __Body__ => (_args) => { var (bases, num, den, qubits) = _args; @@ -59,7 +59,7 @@ public ExpFrac(ToffoliSimulator m) : base(m) /// The implementation of the adjoint specialization of the operation. /// For the Toffoli simulator *only*, this operation is self-adjoint. /// - public override Func<(IQArray, long, long, IQArray), QVoid> AdjointBody => Body; + public override Func<(IQArray, long, long, IQArray), QVoid> __AdjointBody__ => __Body__; /// /// The implementation of the controlled specialization of the operation. @@ -67,7 +67,7 @@ public ExpFrac(ToffoliSimulator m) : base(m) /// if the rotation is effectively an X gate and all of the control qubits /// are in the One state. /// - public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> __ControlledBody__ => (_args) => { var (ctrls, (bases, num, den, qubits)) = _args; @@ -97,7 +97,7 @@ public ExpFrac(ToffoliSimulator m) : base(m) /// The implementation of the controlled adjoint specialization of the operation. /// For the Toffoli simulator *only*, the controlled specialization is self-adjoint. /// - public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> ControlledAdjointBody => ControlledBody; + public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> __ControlledAdjointBody__ => __ControlledBody__; } } } diff --git a/src/Simulation/Simulators/ToffoliSimulator/H.cs b/src/Simulation/Simulators/ToffoliSimulator/H.cs index a9312f6967d..d4f03a40d73 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/H.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/H.cs @@ -25,7 +25,7 @@ public H(ToffoliSimulator m) : base(m) /// The implementation of the operation. /// For the Toffoli simulator, the implementation throws a run-time error. /// - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { throw new NotImplementedException(); }; diff --git a/src/Simulation/Simulators/ToffoliSimulator/M.cs b/src/Simulation/Simulators/ToffoliSimulator/M.cs index 762d5c64d9a..d17c7dc8ec5 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/M.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/M.cs @@ -29,7 +29,7 @@ public M(ToffoliSimulator m) : base(m) /// For the Toffoli simulator, the implementation returns the state of the measured qubit. /// That is, Result.One is returned if the measured qubit is in the One state. /// - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { if (q1 == null) return Result.Zero; diff --git a/src/Simulation/Simulators/ToffoliSimulator/Measure.cs b/src/Simulation/Simulators/ToffoliSimulator/Measure.cs index 7b131d9018f..112e622f7b9 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/Measure.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/Measure.cs @@ -32,7 +32,7 @@ public Measure(ToffoliSimulator m) : base(m) /// That is, Result.One is returned if an odd number of the measured qubits are /// in the One state. /// - public override Func<(IQArray, IQArray), Result> Body => (_args) => + public override Func<(IQArray, IQArray), Result> __Body__ => (_args) => { Qubit? f(Pauli p, Qubit q) => p switch { diff --git a/src/Simulation/Simulators/ToffoliSimulator/R.cs b/src/Simulation/Simulators/ToffoliSimulator/R.cs index 09debce8732..087eaab6044 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/R.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/R.cs @@ -29,7 +29,7 @@ public R(ToffoliSimulator m) : base(m) /// For the Toffoli simulator, the implementation flips the target qubit /// if the rotation is effectively an X gate. /// - public override Func<(Pauli, double, Qubit), QVoid> Body => (_args) => + public override Func<(Pauli, double, Qubit), QVoid> __Body__ => (_args) => { var (basis, angle, q1) = _args; @@ -50,7 +50,7 @@ public R(ToffoliSimulator m) : base(m) /// The implementation of the adjoint specialization of the operation. /// For the Toffoli simulator *only*, this operation is self-adjoint. /// - public override Func<(Pauli, double, Qubit), QVoid> AdjointBody => Body; + public override Func<(Pauli, double, Qubit), QVoid> __AdjointBody__ => __Body__; /// /// The implementation of the controlled specialization of the operation. @@ -58,7 +58,7 @@ public R(ToffoliSimulator m) : base(m) /// if the rotation is effectively an X gate and all of the control qubits /// are in the One state. /// - public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> __ControlledBody__ => (_args) => { var (ctrls, (basis, angle, q1)) = _args; @@ -80,7 +80,7 @@ public R(ToffoliSimulator m) : base(m) /// The implementation of the controlled adjoint specialization of the operation. /// For the Toffoli simulator *only*, the controlled specialization is self-adjoint. /// - public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> ControlledAdjointBody => ControlledBody; + public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> __ControlledAdjointBody__ => __ControlledBody__; } } } diff --git a/src/Simulation/Simulators/ToffoliSimulator/RFrac.cs b/src/Simulation/Simulators/ToffoliSimulator/RFrac.cs index a06a094e36e..3cafddc2156 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/RFrac.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/RFrac.cs @@ -29,7 +29,7 @@ public RFrac(ToffoliSimulator m) : base(m) /// For the Toffoli simulator, the implementation flips the target qubit /// if the rotation is effectively an X gate. /// - public override Func<(Pauli, long, long, Qubit), QVoid> Body => (_args) => + public override Func<(Pauli, long, long, Qubit), QVoid> __Body__ => (_args) => { var (basis, num, den, q1) = _args; @@ -50,7 +50,7 @@ public RFrac(ToffoliSimulator m) : base(m) /// The implementation of the adjoint specialization of the operation. /// For the Toffoli simulator *only*, this operation is self-adjoint. /// - public override Func<(Pauli, long, long, Qubit), QVoid> AdjointBody => Body; + public override Func<(Pauli, long, long, Qubit), QVoid> __AdjointBody__ => __Body__; /// /// The implementation of the controlled specialization of the operation. @@ -58,7 +58,7 @@ public RFrac(ToffoliSimulator m) : base(m) /// if the rotation is effectively an X gate and all of the control qubits /// are in the One state. /// - public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> __ControlledBody__ => (_args) => { var (ctrls, (basis, num, den, q1)) = _args; @@ -80,7 +80,7 @@ public RFrac(ToffoliSimulator m) : base(m) /// The implementation of the controlled adjoint specialization of the operation. /// For the Toffoli simulator *only*, the controlled specialization is self-adjoint. /// - public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> ControlledAdjointBody => ControlledBody; + public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> __ControlledAdjointBody__ => __ControlledBody__; } } } diff --git a/src/Simulation/Simulators/ToffoliSimulator/Random.cs b/src/Simulation/Simulators/ToffoliSimulator/Random.cs index aa64984ec4e..f1de531f998 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/Random.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/Random.cs @@ -29,7 +29,7 @@ public ToffSimRandom(ToffoliSimulator m) : base(m) /// /// The implementation of the operation. /// - public override Func, Int64> Body => (probs) => + public override Func, Int64> __Body__ => (probs) => CommonUtils.SampleDistribution(probs, Simulator.RandomGenerator.NextDouble()); } } diff --git a/src/Simulation/Simulators/ToffoliSimulator/S.cs b/src/Simulation/Simulators/ToffoliSimulator/S.cs index c811f29a169..558fed2979c 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/S.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/S.cs @@ -25,7 +25,7 @@ public S(ToffoliSimulator m) : base(m) /// The implementation of the operation. /// For the Toffoli simulator, the implementation throws a run-time error. /// - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { throw new NotImplementedException(); }; diff --git a/src/Simulation/Simulators/ToffoliSimulator/SWAP.cs b/src/Simulation/Simulators/ToffoliSimulator/SWAP.cs index 507e2f5be5d..863dbba83c1 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/SWAP.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/SWAP.cs @@ -29,7 +29,7 @@ public SWAP(ToffoliSimulator m) : base(m) /// The implementation of the operation. /// For the Toffoli simulator, the implementation swaps the states of the two qubits. /// - public override Func<(Qubit, Qubit), QVoid> Body => (args) => + public override Func<(Qubit, Qubit), QVoid> __Body__ => (args) => { var (q1, q2) = args; @@ -53,7 +53,7 @@ public SWAP(ToffoliSimulator m) : base(m) /// For the Toffoli simulator, the implementation swaps the states of the /// target qubits if all of the control qubits are 1. /// - public override Func<(IQArray, (Qubit, Qubit)), QVoid> ControlledBody => (args) => + public override Func<(IQArray, (Qubit, Qubit)), QVoid> __ControlledBody__ => (args) => { var (ctrls, (q1, q2)) = args; diff --git a/src/Simulation/Simulators/ToffoliSimulator/T.cs b/src/Simulation/Simulators/ToffoliSimulator/T.cs index 88700ef40a0..4445d5fcc17 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/T.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/T.cs @@ -25,7 +25,7 @@ public T(ToffoliSimulator m) : base(m) /// The implementation of the operation. /// For the Toffoli simulator, the implementation throws a run-time error. /// - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { throw new NotImplementedException(); }; diff --git a/src/Simulation/Simulators/ToffoliSimulator/X.cs b/src/Simulation/Simulators/ToffoliSimulator/X.cs index 097208a611e..e72494d21b0 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/X.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/X.cs @@ -28,7 +28,7 @@ public X(ToffoliSimulator m) : base(m) /// The implementation of the operation. /// For the Toffoli simulator, the implementation flips the target qubit. /// - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { if (q1 == null) return QVoid.Instance; @@ -44,7 +44,7 @@ public X(ToffoliSimulator m) : base(m) /// For the Toffoli simulator, the implementation flips the target qubit /// if all of the control qubits are 1. /// - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (args) => { var (ctrls, q) = args; if (q == null) return QVoid.Instance; diff --git a/src/Simulation/Simulators/ToffoliSimulator/Y.cs b/src/Simulation/Simulators/ToffoliSimulator/Y.cs index 235cdef2a8e..61f18ec3090 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/Y.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/Y.cs @@ -25,7 +25,7 @@ public Y(ToffoliSimulator m) : base(m) /// The implementation of the operation. /// For the Toffoli simulator, the implementation throws a run-time error. /// - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { throw new NotImplementedException(); }; diff --git a/src/Simulation/Simulators/ToffoliSimulator/Z.cs b/src/Simulation/Simulators/ToffoliSimulator/Z.cs index 5b56c3f2e79..b0101beff19 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/Z.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/Z.cs @@ -25,7 +25,7 @@ public Z(ToffoliSimulator m) : base(m) /// The implementation of the operation. /// For the Toffoli simulator, the implementation throws a run-time error. /// - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { throw new NotImplementedException(); }; From c3e57550394183de15de2f1e9c75f020e5ffdfb4 Mon Sep 17 00:00:00 2001 From: Sarah Marshall Date: Tue, 18 Aug 2020 18:31:05 -0700 Subject: [PATCH 05/17] Update underscores for Data{In,Out} --- src/Simulation/Core/Functions/Function.cs | 4 +- src/Simulation/Core/Operations/Adjoint.cs | 4 +- src/Simulation/Core/Operations/Controlled.cs | 6 +-- src/Simulation/Core/Operations/Operation.cs | 8 +-- .../Core/Operations/OperationPartial.cs | 10 ++-- .../CsharpGeneration/SimulationCode.fs | 2 +- .../Simulators.Tests/RuntimeMetadataTests.cs | 52 +++++++++---------- .../Simulators.Tests/StartOperationTests.cs | 16 +++--- 8 files changed, 51 insertions(+), 51 deletions(-) diff --git a/src/Simulation/Core/Functions/Function.cs b/src/Simulation/Core/Functions/Function.cs index dfe7fe2defa..6432ca277f8 100644 --- a/src/Simulation/Core/Functions/Function.cs +++ b/src/Simulation/Core/Functions/Function.cs @@ -31,9 +31,9 @@ public Function(IOperationFactory m) : base(m) [DebuggerBrowsable(DebuggerBrowsableState.Never)] public abstract Func __Body__ { get; } - public virtual IApplyData __dataIn(I data) => new QTuple(data); + public virtual IApplyData __DataIn__(I data) => new QTuple(data); - public virtual IApplyData __dataOut(O data) => new QTuple(data); + public virtual IApplyData __DataOut__(O data) => new QTuple(data); public O Apply(I a) { diff --git a/src/Simulation/Core/Operations/Adjoint.cs b/src/Simulation/Core/Operations/Adjoint.cs index 1a1ec1bb14c..a4337c91436 100644 --- a/src/Simulation/Core/Operations/Adjoint.cs +++ b/src/Simulation/Core/Operations/Adjoint.cs @@ -70,9 +70,9 @@ public override void __Init__() { } IEnumerable IApplyData.Qubits => ((IApplyData)this.BaseOp).Qubits; - public override IApplyData __dataIn(I data) => this.BaseOp.__dataIn(data); + public override IApplyData __DataIn__(I data) => this.BaseOp.__DataIn__(data); - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataOut__(QVoid data) => data; /// public override RuntimeMetadata? GetRuntimeMetadata(IApplyData args) diff --git a/src/Simulation/Core/Operations/Controlled.cs b/src/Simulation/Core/Operations/Controlled.cs index 9733e30ca6a..5f0b823c576 100644 --- a/src/Simulation/Core/Operations/Controlled.cs +++ b/src/Simulation/Core/Operations/Controlled.cs @@ -109,9 +109,9 @@ public override void __Init__() { } IEnumerable IApplyData.Qubits => ((IApplyData)this.BaseOp).Qubits; - public override IApplyData __dataIn((IQArray, I) data) => new In((data.Item1, this.BaseOp.__dataIn(data.Item2))); + public override IApplyData __DataIn__((IQArray, I) data) => new In((data.Item1, this.BaseOp.__DataIn__(data.Item2))); - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataOut__(QVoid data) => data; /// public override RuntimeMetadata? GetRuntimeMetadata(IApplyData args) @@ -121,7 +121,7 @@ public override void __Init__() { } if (args.Value is ValueTuple, I> ctrlArgs) { var (controls, baseArgs) = ctrlArgs; - var baseMetadata = this.BaseOp.GetRuntimeMetadata(this.BaseOp.__dataIn(baseArgs)); + var baseMetadata = this.BaseOp.GetRuntimeMetadata(this.BaseOp.__DataIn__(baseArgs)); if (baseMetadata == null) return null; baseMetadata.IsControlled = true; baseMetadata.Controls = controls.Concat(baseMetadata.Controls); diff --git a/src/Simulation/Core/Operations/Operation.cs b/src/Simulation/Core/Operations/Operation.cs index 7493eebb994..3632ede3be5 100644 --- a/src/Simulation/Core/Operations/Operation.cs +++ b/src/Simulation/Core/Operations/Operation.cs @@ -55,9 +55,9 @@ public Operation(IOperationFactory m) : base(m) OperationFunctor ICallable.Variant => OperationFunctor.Body; - public virtual IApplyData __dataIn(I data) => new QTuple(data); + public virtual IApplyData __DataIn__(I data) => new QTuple(data); - public virtual IApplyData __dataOut(O data) => new QTuple(data); + public virtual IApplyData __DataOut__(O data) => new QTuple(data); [DebuggerBrowsable(DebuggerBrowsableState.Never)] public abstract Func __Body__ { get; } @@ -92,7 +92,7 @@ public O Apply(I a) try { - this.__Factory__?.StartOperation(this, __dataIn(a)); + this.__Factory__?.StartOperation(this, __DataIn__(a)); __result__ = this.__Body__(a); } catch (Exception e) @@ -102,7 +102,7 @@ public O Apply(I a) } finally { - this.__Factory__?.EndOperation(this, __dataOut(__result__)); + this.__Factory__?.EndOperation(this, __DataOut__(__result__)); } return __result__; diff --git a/src/Simulation/Core/Operations/OperationPartial.cs b/src/Simulation/Core/Operations/OperationPartial.cs index 7a4a7f83e74..2dc02cc2946 100644 --- a/src/Simulation/Core/Operations/OperationPartial.cs +++ b/src/Simulation/Core/Operations/OperationPartial.cs @@ -29,7 +29,7 @@ public class In : IApplyData public In(Operation op, Func mapper, P data) { - this.__data = new Lazy(() => op?.__dataIn(mapper(data))); + this.__data = new Lazy(() => op?.__DataIn__(mapper(data))); } public object Value => __data.Value.Value; @@ -45,7 +45,7 @@ public OperationPartial(Operation op, Func mapper) : base(op.__Facto this.BaseOp = op; this.Mapper = mapper; - this.__qubits = new Lazy(() => op?.__dataIn(mapper(default(P)))?.Qubits?.ToArray()); + this.__qubits = new Lazy(() => op?.__DataIn__(mapper(default(P)))?.Qubits?.ToArray()); } public OperationPartial(Operation op, object partialTuple) : base(op.__Factory__) @@ -55,7 +55,7 @@ public OperationPartial(Operation op, object partialTuple) : base(op.__Fac this.BaseOp = op; this.Mapper = PartialMapper.Create(partialTuple); - this.__qubits = new Lazy(() => op?.__dataIn(this.Mapper(default(P)))?.Qubits?.ToArray()); + this.__qubits = new Lazy(() => op?.__DataIn__(this.Mapper(default(P)))?.Qubits?.ToArray()); } public override void __Init__() { } @@ -70,9 +70,9 @@ public override void __Init__() { } OperationFunctor ICallable.Variant => ((ICallable)this.BaseOp).Variant; - public override IApplyData __dataIn(P data) => new In(this.BaseOp, this.Mapper, data); + public override IApplyData __DataIn__(P data) => new In(this.BaseOp, this.Mapper, data); - public override IApplyData __dataOut(O data) => this.BaseOp.__dataOut(data); + public override IApplyData __DataOut__(O data) => this.BaseOp.__DataOut__(data); public override Func __Body__ => (a) => { diff --git a/src/Simulation/CsharpGeneration/SimulationCode.fs b/src/Simulation/CsharpGeneration/SimulationCode.fs index 3b98f619607..ba9588d2fdd 100644 --- a/src/Simulation/CsharpGeneration/SimulationCode.fs +++ b/src/Simulation/CsharpGeneration/SimulationCode.fs @@ -1295,7 +1295,7 @@ module SimulationCode = let buildMethod t body = let baseType = (roslynTypeName context t) let args = [ (``param`` "data" ``of`` (``type`` (roslynTypeName context t)) ) ] - ``arrow_method`` "IApplyData" (sprintf "__data%s" name) ``<<`` [] ``>>`` + ``arrow_method`` "IApplyData" (sprintf "__Data%s__" name) ``<<`` [] ``>>`` ``(`` args ``)`` [``public``; ``override``] ( Some ( ``=>`` body) ) diff --git a/src/Simulation/Simulators.Tests/RuntimeMetadataTests.cs b/src/Simulation/Simulators.Tests/RuntimeMetadataTests.cs index 2d8ee9a75cd..8ba1e3cd373 100644 --- a/src/Simulation/Simulators.Tests/RuntimeMetadataTests.cs +++ b/src/Simulation/Simulators.Tests/RuntimeMetadataTests.cs @@ -189,7 +189,7 @@ public void CNOT() var control = new FreeQubit(1); var target = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn((control, target)); + var args = op.__DataIn__((control, target)); var expected = new RuntimeMetadata() { Label = "X", @@ -213,7 +213,7 @@ public void CCNOT() var control2 = new FreeQubit(2); var target = new FreeQubit(1); var op = new QuantumSimulator().Get(); - var args = op.__dataIn((control1, control2, target)); + var args = op.__DataIn__((control1, control2, target)); var expected = new RuntimeMetadata() { Label = "X", @@ -236,7 +236,7 @@ public void Swap() var q1 = new FreeQubit(0); var q2 = new FreeQubit(1); var op = new QuantumSimulator().Get(); - var args = op.__dataIn((q1, q2)); + var args = op.__DataIn__((q1, q2)); var expected = new RuntimeMetadata() { Label = "SWAP", @@ -258,7 +258,7 @@ public void Ry() { var target = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn((2.1, target)); + var args = op.__DataIn__((2.1, target)); var expected = new RuntimeMetadata() { Label = "Ry", @@ -280,7 +280,7 @@ public void M() { var measureQubit = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn(measureQubit); + var args = op.__DataIn__(measureQubit); var expected = new RuntimeMetadata() { Label = "M", @@ -302,7 +302,7 @@ public void Reset() { var target = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn(target); + var args = op.__DataIn__(target); var expected = new RuntimeMetadata() { Label = "Reset", @@ -324,7 +324,7 @@ public void ResetAll() { IQArray targets = new QArray(new[] { new FreeQubit(0) }); var op = new QuantumSimulator().Get(); - var args = op.__dataIn(targets); + var args = op.__DataIn__(targets); var expected = new RuntimeMetadata() { Label = "ResetAll", @@ -349,7 +349,7 @@ public void MResetX() { var measureQubit = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn(measureQubit); + var args = op.__DataIn__(measureQubit); var expected = new RuntimeMetadata() { Label = "MResetX", @@ -371,7 +371,7 @@ public void MResetY() { var measureQubit = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn(measureQubit); + var args = op.__DataIn__(measureQubit); var expected = new RuntimeMetadata() { Label = "MResetY", @@ -393,7 +393,7 @@ public void MResetZ() { var measureQubit = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn(measureQubit); + var args = op.__DataIn__(measureQubit); var expected = new RuntimeMetadata() { Label = "MResetZ", @@ -418,7 +418,7 @@ public void EmptyOperation() { var measureQubit = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn(QVoid.Instance); + var args = op.__DataIn__(QVoid.Instance); var expected = new RuntimeMetadata() { Label = "Empty", @@ -441,7 +441,7 @@ public void OperationAsArgument() var q = new FreeQubit(0); var opArg = new QuantumSimulator().Get(); var op = new QuantumSimulator().Get(); - var args = op.__dataIn((opArg, q)); + var args = op.__DataIn__((opArg, q)); var expected = new RuntimeMetadata() { Label = "WrapperOp", @@ -462,7 +462,7 @@ public void OperationAsArgument() public void NestedOperation() { var op = new QuantumSimulator().Get(); - var args = op.__dataIn(QVoid.Instance); + var args = op.__DataIn__(QVoid.Instance); var expected = new RuntimeMetadata() { Label = "NestedOp", @@ -484,7 +484,7 @@ public void DuplicateQubitArgs() { var q = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn((q, q)); + var args = op.__DataIn__((q, q)); var expected = new RuntimeMetadata() { Label = "TwoQubitOp", @@ -506,7 +506,7 @@ public void QArrayArgs() { var op = new QuantumSimulator().Get(); IQArray bits = new QArray(new bool[] { false, true }); - var args = op.__dataIn(bits); + var args = op.__DataIn__(bits); var expected = new RuntimeMetadata() { Label = "BoolArrayOp", @@ -531,7 +531,7 @@ public void FooUDTOp() { Qubit target = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn(new Circuits.FooUDT(("bar", (target, 2.1)))); + var args = op.__DataIn__(new Circuits.FooUDT(("bar", (target, 2.1)))); var expected = new RuntimeMetadata() { Label = "FooUDTOp", @@ -557,7 +557,7 @@ public void ControlledH() IQArray controls = new QArray(new[] { new FreeQubit(0) }); Qubit target = new FreeQubit(1); var op = new QuantumSimulator().Get().Controlled; - var args = op.__dataIn((controls, target)); + var args = op.__DataIn__((controls, target)); var expected = new RuntimeMetadata() { Label = "H", @@ -580,7 +580,7 @@ public void ControlledX() IQArray controls = new QArray(new[] { new FreeQubit(0) }); Qubit target = new FreeQubit(1); var op = new QuantumSimulator().Get().Controlled; - var args = op.__dataIn((controls, target)); + var args = op.__DataIn__((controls, target)); var expected = new RuntimeMetadata() { Label = "X", @@ -604,7 +604,7 @@ public void ControlledCNOT() Qubit control = new FreeQubit(1); Qubit target = new FreeQubit(2); var op = new QuantumSimulator().Get().Controlled; - var args = op.__dataIn((controls, (control, target))); + var args = op.__DataIn__((controls, (control, target))); var expected = new RuntimeMetadata() { Label = "X", @@ -630,7 +630,7 @@ public void ControlledCCNOT() Qubit target = new FreeQubit(3); IQArray controls = new QArray(new[] { control1 }); var op = new QuantumSimulator().Get().Controlled; - var args = op.__dataIn((controls, (control2, control3, target))); + var args = op.__DataIn__((controls, (control2, control3, target))); var expected = new RuntimeMetadata() { Label = "X", @@ -655,7 +655,7 @@ public void AdjointH() { Qubit target = new FreeQubit(0); var op = new QuantumSimulator().Get().Adjoint; - var args = op.__dataIn(target); + var args = op.__DataIn__(target); var expected = new RuntimeMetadata() { Label = "H", @@ -677,7 +677,7 @@ public void AdjointX() { Qubit target = new FreeQubit(0); var op = new QuantumSimulator().Get().Adjoint; - var args = op.__dataIn(target); + var args = op.__DataIn__(target); var expected = new RuntimeMetadata() { Label = "X", @@ -699,7 +699,7 @@ public void AdjointAdjointH() { Qubit target = new FreeQubit(0); var op = new QuantumSimulator().Get().Adjoint.Adjoint; - var args = op.__dataIn(target); + var args = op.__DataIn__(target); var expected = new RuntimeMetadata() { Label = "H", @@ -723,7 +723,7 @@ public void ControlledAdjointH() Qubit target = new FreeQubit(1); var op1 = new QuantumSimulator().Get().Controlled.Adjoint; var op2 = new QuantumSimulator().Get().Adjoint.Controlled; - var args = op1.__dataIn((controls, target)); + var args = op1.__DataIn__((controls, target)); var expected = new RuntimeMetadata() { Label = "H", @@ -749,7 +749,7 @@ public void ControlledAdjointAdjointH() var op1 = new QuantumSimulator().Get().Controlled.Adjoint.Adjoint; var op2 = new QuantumSimulator().Get().Adjoint.Controlled.Adjoint; var op3 = new QuantumSimulator().Get().Adjoint.Adjoint.Controlled; - var args = op1.__dataIn((controls, target)); + var args = op1.__DataIn__((controls, target)); var expected = new RuntimeMetadata() { Label = "H", @@ -778,7 +778,7 @@ public void PartialRy() var target = new FreeQubit(0); var op = new QuantumSimulator().Get().Partial((double d) => new ValueTuple(d, target)); - var args = op.__dataIn(2.1); + var args = op.__DataIn__(2.1); var expected = new RuntimeMetadata() { Label = "Ry", diff --git a/src/Simulation/Simulators.Tests/StartOperationTests.cs b/src/Simulation/Simulators.Tests/StartOperationTests.cs index d07af93db07..f4fb50f8cfd 100644 --- a/src/Simulation/Simulators.Tests/StartOperationTests.cs +++ b/src/Simulation/Simulators.Tests/StartOperationTests.cs @@ -141,11 +141,11 @@ Helper. RunWithMultipleSimulators((s) => var p1 = basic.Partial(m1); var p2 = p1.Partial(m2); - AssertTuple(expected, p1.__dataIn((q2, q3)).Value); - AssertTuple(expected, p2.__dataIn((q2)).Value); + AssertTuple(expected, p1.__DataIn__((q2, q3)).Value); + AssertTuple(expected, p2.__DataIn__((q2)).Value); - Assert.Equal(new Qubit[] { q1, q2, q3 }, p1.__dataIn((q2, q3)).Qubits); - Assert.Equal(new Qubit[] { q1, q2, q3 }, p2.__dataIn(q2).Qubits); + Assert.Equal(new Qubit[] { q1, q2, q3 }, p1.__DataIn__((q2, q3)).Qubits); + Assert.Equal(new Qubit[] { q1, q2, q3 }, p2.__DataIn__(q2).Qubits); Assert.Null(((IApplyData)basic).Qubits); Assert.Equal(new Qubit[] { q1, null, null }, ((IApplyData)p1).Qubits); @@ -169,11 +169,11 @@ public void StartUDTDataIn() var p1 = ((Basic)basic.Data).Partial(m1); var p2 = p1.Partial(m2); - AssertTuple(expected, p1.__dataIn((q2, q3)).Value); - AssertTuple(expected, p2.__dataIn((q2)).Value); + AssertTuple(expected, p1.__DataIn__((q2, q3)).Value); + AssertTuple(expected, p2.__DataIn__((q2)).Value); - Assert.Equal(new Qubit[] { q1, q2, q3 }, p1.__dataIn((q2, q3)).Qubits); - Assert.Equal(new Qubit[] { q1, q2, q3 }, p2.__dataIn(q2).Qubits); + Assert.Equal(new Qubit[] { q1, q2, q3 }, p1.__DataIn__((q2, q3)).Qubits); + Assert.Equal(new Qubit[] { q1, q2, q3 }, p2.__DataIn__(q2).Qubits); Assert.Null(((IApplyData)basic).Qubits); Assert.Equal(new Qubit[] { q1, null, null }, ((IApplyData)p1).Qubits); From 625ea79779c0d06a1683fc282d3f729d4c3b0e38 Mon Sep 17 00:00:00 2001 From: Sarah Marshall Date: Tue, 18 Aug 2020 18:36:09 -0700 Subject: [PATCH 06/17] Update Body to __Body__ in property reflection --- src/Simulation/Core/Generics/GenericCallable.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Simulation/Core/Generics/GenericCallable.cs b/src/Simulation/Core/Generics/GenericCallable.cs index 5dc7ebf3e2a..3dcd5b98b5a 100644 --- a/src/Simulation/Core/Generics/GenericCallable.cs +++ b/src/Simulation/Core/Generics/GenericCallable.cs @@ -162,7 +162,7 @@ public virtual Type FindClosedType(Type I, Type O) // Get the list of Parameters of the Invoke method of the Body of the operation: var expectedParameters = this.OperationType - .GetProperty("Body").PropertyType + .GetProperty("__Body__").PropertyType .GetMethod("Invoke").GetParameters(); // Tuple in... @@ -171,7 +171,7 @@ public virtual Type FindClosedType(Type I, Type O) // Tuple out... var expectedReturn = this.OperationType - .GetProperty("Body").PropertyType + .GetProperty("__Body__").PropertyType .GetMethod("Invoke").ReturnType; Resolve(expectedReturn, O, typeArgs); From d2f691cdd99cc32a625bdcb1bb20429865126d77 Mon Sep 17 00:00:00 2001 From: Sarah Marshall Date: Tue, 18 Aug 2020 18:51:41 -0700 Subject: [PATCH 07/17] Use underscores for Deconstruct --- src/Simulation/CsharpGeneration/SimulationCode.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Simulation/CsharpGeneration/SimulationCode.fs b/src/Simulation/CsharpGeneration/SimulationCode.fs index ba9588d2fdd..1a1825a349e 100644 --- a/src/Simulation/CsharpGeneration/SimulationCode.fs +++ b/src/Simulation/CsharpGeneration/SimulationCode.fs @@ -1517,7 +1517,7 @@ module SimulationCode = match qsharpType.Resolution with | QsTypeKind.TupleType many -> many |> Seq.mapi buildOneParameter |> List.ofSeq | _ -> [] - ``method`` "void" "Deconstruct" ``<<`` [] ``>>`` + ``method`` "void" "__Deconstruct__" ``<<`` [] ``>>`` ``(`` parameters ``)`` [ ``public`` ] ``{`` body ``}`` From 903b2b6b49b013f1fd5cb15d96ddc6d837a2e137 Mon Sep 17 00:00:00 2001 From: Sarah Marshall Date: Wed, 19 Aug 2020 09:38:40 -0700 Subject: [PATCH 08/17] Update tests --- .../SimulationCodeTests.fs | 286 +++++++++--------- 1 file changed, 143 insertions(+), 143 deletions(-) diff --git a/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs b/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs index 3b9062da732..53928582860 100644 --- a/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs +++ b/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs @@ -861,10 +861,10 @@ namespace N1 let context = createTestContext op let deps = op |> operationDependencies |> depsByName let actual = deps |> buildInit context |> formatSyntaxTree - let expected = sprintf "public override void Init() { %s }" (String.concat "" body) + let expected = sprintf "public override void __Init__() { %s }" (String.concat "" body) Assert.Equal (expected |> clearFormatting, actual |> clearFormatting) - let template = sprintf "this.%s = this.Factory.Get<%s>(typeof(%s));" + let template = sprintf "this.%s = this.__Factory__.Get<%s>(typeof(%s));" [ ] |> testOne emptyOperation @@ -878,27 +878,27 @@ namespace N1 |> testOne genU2 [ - template "Allocate" "Allocate" "global::Microsoft.Quantum.Intrinsic.Allocate" - template "MicrosoftQuantumIntrinsicH" "IUnitary" "global::Microsoft.Quantum.Intrinsic.H" - template "H" "ICallable" "H" - template "Release" "Release" "global::Microsoft.Quantum.Intrinsic.Release" - template "MicrosoftQuantumOverridesemptyFunction" "ICallable" "global::Microsoft.Quantum.Overrides.emptyFunction" - template "emptyFunction" "ICallable" "emptyFunction" + template "Allocate" "Allocate" "global::Microsoft.Quantum.Intrinsic.Allocate" + template "Microsoft__Quantum__Intrinsic__H" "IUnitary" "global::Microsoft.Quantum.Intrinsic.H" + template "H" "ICallable" "H" + template "Release" "Release" "global::Microsoft.Quantum.Intrinsic.Release" + template "Microsoft__Quantum__Overrides__emptyFunction" "ICallable" "global::Microsoft.Quantum.Overrides.emptyFunction" + template "emptyFunction" "ICallable" "emptyFunction" ] |> testOne duplicatedDefinitionsCaller [ - template "Allocate" "Allocate" "global::Microsoft.Quantum.Intrinsic.Allocate" - template "CNOT" "IAdjointable<(Qubit, Qubit)>" "global::Microsoft.Quantum.Intrinsic.CNOT" - template "MicrosoftQuantumTestingHold" "ICallable" "global::Microsoft.Quantum.Testing.Hold<>" - template "Release" "Release" "global::Microsoft.Quantum.Intrinsic.Release" - template "ResultToString" "ICallable" "ResultToString" - template "X" "IUnitary" "global::Microsoft.Quantum.Intrinsic.X" - template "genIter" "IUnitary" "genIter<>" - template "genMapper" "ICallable" "genMapper<,>" - template "genU1" "IUnitary" "genU1<>" - template "MicrosoftQuantumTestingnoOpGeneric" "IUnitary" "global::Microsoft.Quantum.Testing.noOpGeneric<>" - template "MicrosoftQuantumTestingnoOpResult" "IUnitary" "global::Microsoft.Quantum.Testing.noOpResult" + template "Allocate" "Allocate" "global::Microsoft.Quantum.Intrinsic.Allocate" + template "CNOT" "IAdjointable<(Qubit, Qubit)>" "global::Microsoft.Quantum.Intrinsic.CNOT" + template "Microsoft__Quantum__Testing__Hold" "ICallable" "global::Microsoft.Quantum.Testing.Hold<>" + template "Release" "Release" "global::Microsoft.Quantum.Intrinsic.Release" + template "ResultToString" "ICallable" "ResultToString" + template "X" "IUnitary" "global::Microsoft.Quantum.Intrinsic.X" + template "genIter" "IUnitary" "genIter<>" + template "genMapper" "ICallable" "genMapper<,>" + template "genU1" "IUnitary" "genU1<>" + template "Microsoft__Quantum__Testing__noOpGeneric" "IUnitary" "global::Microsoft.Quantum.Testing.noOpGeneric<>" + template "Microsoft__Quantum__Testing__noOpResult" "IUnitary" "global::Microsoft.Quantum.Testing.noOpResult" ] |> testOne usesGenerics @@ -983,15 +983,15 @@ namespace N1 [ template "Allocate" "Allocate" template "IAdjointable<(Qubit,Qubit)>" "CNOT" - template "ICallable" "MicrosoftQuantumTestingHold" + template "ICallable" "Microsoft__Quantum__Testing__Hold" template "Release" "Release" template "ICallable" "ResultToString" template "IUnitary" "X" template "IUnitary" "genIter" template "ICallable" "genMapper" template "IUnitary" "genU1" - template "IUnitary" "MicrosoftQuantumTestingnoOpGeneric" - template "IUnitary" "MicrosoftQuantumTestingnoOpResult" + template "IUnitary" "Microsoft__Quantum__Testing__noOpGeneric" + template "IUnitary" "Microsoft__Quantum__Testing__noOpResult" ] |> testOne usesGenerics @@ -1190,7 +1190,7 @@ namespace N1 [ "var a = (IQArray)new QArray(Result.One, Result.Zero, Result.Zero);" "var s = (IQArray)new QArray(ResultToString.Apply(a[0L]), ResultToString.Apply(a[1L]));" - "MicrosoftQuantumTestingnoOpResult.Apply(a[0L]);" + "Microsoft__Quantum__Testing__noOpResult.Apply(a[0L]);" """ { @@ -1199,11 +1199,11 @@ namespace N1 bool __arg1__ = true; try { - var op = MicrosoftQuantumTestingHold.Partial(new Func((__arg2__) => (CNOT, (qubits[0L], qubits[1L]), __arg2__))); + var op = Microsoft__Quantum__Testing__Hold.Partial(new Func((__arg2__) => (CNOT, (qubits[0L], qubits[1L]), __arg2__))); op.Apply(QVoid.Instance); - MicrosoftQuantumTestingnoOpGeneric.Apply(qubits[0L]); - MicrosoftQuantumTestingnoOpGeneric.Apply(a[0L]); + Microsoft__Quantum__Testing__noOpGeneric.Apply(qubits[0L]); + Microsoft__Quantum__Testing__noOpGeneric.Apply(a[0L]); genIter.Apply((X, qubits)); } #line hidden @@ -1222,7 +1222,7 @@ namespace N1 } } """ - "genIter.Apply((MicrosoftQuantumTestingnoOpResult, a));" + "genIter.Apply((Microsoft__Quantum__Testing__noOpResult, a));" """ genIter.Apply((genU1, genMapper.Apply>((ResultToString, a)))); """ @@ -1732,7 +1732,7 @@ namespace N1 |> testOne randomAbstractOperation Some """ - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { #line hidden return QVoid.Instance; @@ -1740,7 +1740,7 @@ namespace N1 |> testOne zeroQubitOperation Some """ - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { var q1 = __in__; @@ -1752,7 +1752,7 @@ namespace N1 |> testOne oneQubitOperation Some """ - public override Func<(Qubit,(Qubit,Double)), QVoid> Body => (__in__) => + public override Func<(Qubit,(Qubit,Double)), QVoid> __Body__ => (__in__) => { var (q1,t1) = __in__; @@ -1769,7 +1769,7 @@ namespace N1 Some """ - public override Func<(Qubit,Qubit,IQArray), QVoid> Body => (__in__) => + public override Func<(Qubit,Qubit,IQArray), QVoid> __Body__ => (__in__) => { var (q1,q2,arr1) = __in__; @@ -1796,7 +1796,7 @@ namespace N1 let op4 = "IUnitary"; let f1 = "ICallable" Some (sprintf """ - public override Func<(Qubit, %s, %s, %s, (%s, %s), %s), %s> Body => (__in__) => + public override Func<(Qubit, %s, %s, %s, (%s, %s), %s), %s> __Body__ => (__in__) => { var (q1, op0, op1, op2, t1, f1) = __in__; op1.Apply(OP_1); @@ -1925,17 +1925,17 @@ namespace N1 None |> testOne oneQubitAbstractOperation - Some "public override Func AdjointBody => Body;" + Some "public override Func __AdjointBody__ => __Body__;" |> testOne oneQubitSelfAdjointAbstractOperation None |> testOne randomAbstractOperation - Some "public override Func AdjointBody => Body;" + Some "public override Func __AdjointBody__ => __Body__;" |> testOne oneQubitSelfAdjointOperation Some """ - public override Func AdjointBody => (__in__) => + public override Func __AdjointBody__ => (__in__) => { #line hidden return QVoid.Instance; @@ -1943,7 +1943,7 @@ namespace N1 |> testOne zeroQubitOperation Some """ - public override Func AdjointBody => (__in__) => + public override Func __AdjointBody__ => (__in__) => { var q1 = __in__; X.Adjoint.Apply(q1); @@ -1954,7 +1954,7 @@ namespace N1 |> testOne oneQubitOperation Some """ - public override Func<(Qubit,(Qubit,Double)), QVoid> AdjointBody => (__in__) => + public override Func<(Qubit,(Qubit,Double)), QVoid> __AdjointBody__ => (__in__) => { var (q1,t1) = __in__; @@ -1969,7 +1969,7 @@ namespace N1 |> testOne twoQubitOperation Some """ - public override Func<(Qubit,Qubit,Qubits), QVoid> AdjointBody => (__in__) => + public override Func<(Qubit,Qubit,Qubits), QVoid> __AdjointBody__ => (__in__) => { var (q1,q2,arr1) = __in__; three_op1.Adjoint.Apply((q1, q2)); @@ -1981,7 +1981,7 @@ namespace N1 |> testOne threeQubitOperation - Some "public override Func<__T__, QVoid> AdjointBody => Body;" + Some "public override Func<__T__, QVoid> __AdjointBody__ => __Body__;" |> testOne genAdj1 [] @@ -1998,7 +1998,7 @@ namespace N1 |> testOne randomAbstractOperation Some """ - public override Func<(IQArray,QVoid), QVoid> ControlledBody => (__in__) => + public override Func<(IQArray,QVoid), QVoid> __ControlledBody__ => (__in__) => { var (__controlQubits__, __unitArg__) = __in__; @@ -2008,7 +2008,7 @@ namespace N1 |> testOne zeroQubitOperation Some """ - public override Func<(IQArray,Qubit), QVoid> ControlledBody => (__in__) => + public override Func<(IQArray,Qubit), QVoid> __ControlledBody__ => (__in__) => { var (c, q1) = __in__; @@ -2020,7 +2020,7 @@ namespace N1 |> testOne oneQubitOperation Some """ - public override Func<(IQArray,(Qubit,Qubit,Qubits)), QVoid> ControlledBody => (__in__) => + public override Func<(IQArray,(Qubit,Qubit,Qubits)), QVoid> __ControlledBody__ => (__in__) => { var (c, (q1, q2, arr1)) = __in__; @@ -2040,14 +2040,14 @@ namespace N1 None |> testOne oneQubitAbstractOperation - Some "public override Func<(IQArray,Qubit), QVoid> ControlledAdjointBody => ControlledBody;" + Some "public override Func<(IQArray,Qubit), QVoid> __ControlledAdjointBody__ => __ControlledBody__;" |> testOne oneQubitSelfAdjointAbstractOperation None |> testOne randomAbstractOperation Some """ - public override Func<(IQArray,QVoid), QVoid> ControlledAdjointBody => (__in__) => + public override Func<(IQArray,QVoid), QVoid> __ControlledAdjointBody__ => (__in__) => { var (__controlQubits__, __unitArg__) = __in__; @@ -2057,7 +2057,7 @@ namespace N1 |> testOne zeroQubitOperation Some """ - public override Func<(IQArray, Qubit), QVoid> ControlledAdjointBody => (__in__) => + public override Func<(IQArray, Qubit), QVoid> __ControlledAdjointBody__ => (__in__) => { var (c,q1) = __in__; X.Controlled.Adjoint.Apply((c, q1)); @@ -2068,7 +2068,7 @@ namespace N1 |> testOne oneQubitOperation Some """ - public override Func<(IQArray,(Qubit,Qubit,Qubits)), QVoid> ControlledAdjointBody => (__in__) => + public override Func<(IQArray,(Qubit,Qubit,Qubits)), QVoid> __ControlledAdjointBody__ => (__in__) => { var (c,(q1,q2,arr1)) = __in__; @@ -2357,10 +2357,10 @@ namespace N1 public static HoneywellEntryPointInfo Info => new HoneywellEntryPointInfo(typeof(emptyOperation)); - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn(QVoid data) => data; - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataIn__(QVoid data) => data; + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__) { return __m__.Run(QVoid.Instance); @@ -2396,10 +2396,10 @@ namespace N1 public static IonQEntryPointInfo<(Qubit, Basis, (Pauli, IQArray>, Boolean), Int64), QVoid> Info => new IonQEntryPointInfo<(Qubit, Basis, (Pauli, IQArray>, Boolean), Int64), QVoid>(typeof(randomAbstractOperation)); - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn((Qubit,Basis,(Pauli,IQArray>,Boolean),Int64) data) => new In(data); - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataIn__((Qubit,Basis,(Pauli,IQArray>,Boolean),Int64) data) => new In(data); + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__, Qubit q1, Basis b, (Pauli,IQArray>,Boolean) t, Int64 i) { return __m__.Run>,Boolean),Int64), QVoid>((q1, b, t, i)); @@ -2426,7 +2426,7 @@ namespace N1 protected IUnitary X { get; set; } - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { var q1 = __in__; X.Apply(q1); @@ -2435,7 +2435,7 @@ namespace N1 } ; - public override Func AdjointBody => (__in__) => + public override Func __AdjointBody__ => (__in__) => { var q1 = __in__; X.Adjoint.Apply(q1); @@ -2444,7 +2444,7 @@ namespace N1 } ; - public override Func<(IQArray,Qubit), QVoid> ControlledBody => (__in__) => + public override Func<(IQArray,Qubit), QVoid> __ControlledBody__ => (__in__) => { var (c,q1) = __in__; X.Controlled.Apply((c, q1)); @@ -2453,7 +2453,7 @@ namespace N1 } ; - public override Func<(IQArray,Qubit), QVoid> ControlledAdjointBody => (__in__) => + public override Func<(IQArray,Qubit), QVoid> __ControlledAdjointBody__ => (__in__) => { var (c,q1) = __in__; X.Controlled.Adjoint.Apply((c, q1)); @@ -2463,13 +2463,13 @@ namespace N1 ; - public override void Init() + public override void __Init__() { - this.X = this.Factory.Get>(typeof(global::Microsoft.Quantum.Intrinsic.X)); + this.X = this.__Factory__.Get>(typeof(global::Microsoft.Quantum.Intrinsic.X)); } - public override IApplyData __dataIn(Qubit data) => data; - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataIn__(Qubit data) => data; + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__, Qubit q1) { return __m__.Run(q1); @@ -2510,10 +2510,10 @@ namespace N1 public static HoneywellEntryPointInfo<(__X__, (Int64, (__Y__, __Z__), Result)), QVoid> Info => new HoneywellEntryPointInfo<(__X__, (Int64, (__Y__, __Z__), Result)), QVoid>(typeof(genCtrl3<__X__,__Y__,__Z__>)); - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn((__X__,(Int64,(__Y__,__Z__),Result)) data) => new In(data); - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataIn__((__X__,(Int64,(__Y__,__Z__),Result)) data) => new In(data); + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__, __X__ arg1, (Int64,(__Y__,__Z__),Result) arg2) { return __m__.Run, (__X__,(Int64,(__Y__,__Z__),Result)), QVoid>((arg1, arg2)); @@ -2551,7 +2551,7 @@ namespace N1 public static IonQEntryPointInfo<(ICallable, ICallable, __B__), QVoid> Info => new IonQEntryPointInfo<(ICallable, ICallable, __B__), QVoid>(typeof(composeImpl<__A__,__B__>)); - public override Func<(ICallable,ICallable,__B__), QVoid> Body => (__in__) => + public override Func<(ICallable,ICallable,__B__), QVoid> __Body__ => (__in__) => { var (second,first,arg) = __in__; second.Apply(first.Apply<__A__>(arg)); @@ -2559,10 +2559,10 @@ namespace N1 return QVoid.Instance; }; - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn((ICallable,ICallable,__B__) data) => new In(data); - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataIn__((ICallable,ICallable,__B__) data) => new In(data); + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__, ICallable second, ICallable first, __B__ arg) { return __m__.Run, (ICallable,ICallable,__B__), QVoid>((second, first, arg)); @@ -2585,10 +2585,10 @@ namespace N1 public static QCIEntryPointInfo<__A__, QVoid> Info => new QCIEntryPointInfo<__A__, QVoid>(typeof(genF1<__A__>)); - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn(__A__ data) => new QTuple<__A__>(data); - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataIn__(__A__ data) => new QTuple<__A__>(data); + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__, __A__ arg) { return __m__.Run, __A__, QVoid>(arg); @@ -2611,19 +2611,19 @@ internal partial class EmptyInternalFunction : Function, ICallable String ICallable.FullName => "Microsoft.Quantum.Compiler.Generics.EmptyInternalFunction"; public static EntryPointInfo Info => new EntryPointInfo(typeof(EmptyInternalFunction)); - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { #line hidden return QVoid.Instance; }; - public override void Init() + public override void __Init__() { } - public override IApplyData __dataIn(QVoid data) => data; + public override IApplyData __DataIn__(QVoid data) => data; - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__) { @@ -2645,19 +2645,19 @@ internal partial class EmptyInternalOperation : Operation, ICallab String ICallable.FullName => "Microsoft.Quantum.Compiler.Generics.EmptyInternalOperation"; public static EntryPointInfo Info => new EntryPointInfo(typeof(EmptyInternalOperation)); - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { #line hidden return QVoid.Instance; }; - public override void Init() + public override void __Init__() { } - public override IApplyData __dataIn(QVoid data) => data; + public override IApplyData __DataIn__(QVoid data) => data; - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__) { @@ -2672,7 +2672,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab let ``duplicatedDefinitionsCaller body`` () = [ "emptyFunction.Apply(QVoid.Instance);" - "MicrosoftQuantumOverridesemptyFunction.Apply(QVoid.Instance);" + "Microsoft__Quantum__Overrides__emptyFunction.Apply(QVoid.Instance);" """ { var qubits = Allocate.Apply(1L); @@ -2681,7 +2681,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab try { H.Apply(qubits[0L]); - MicrosoftQuantumIntrinsicH.Apply(qubits[0L]); + Microsoft__Quantum__Intrinsic__H.Apply(qubits[0L]); } #line hidden catch @@ -2710,10 +2710,10 @@ internal partial class EmptyInternalOperation : Operation, ICallab let expected = [ template "Allocate" "Allocate" - template "IUnitary" "MicrosoftQuantumIntrinsicH" + template "IUnitary" "Microsoft__Quantum__Intrinsic__H" template "ICallable" "H" template "Release" "Release" - template "ICallable" "MicrosoftQuantumOverridesemptyFunction" + template "ICallable" "Microsoft__Quantum__Overrides__emptyFunction" template "ICallable" "emptyFunction" ] @@ -2762,17 +2762,17 @@ internal partial class EmptyInternalOperation : Operation, ICallab String ICallable.FullName => "Microsoft.Quantum.Compiler.Generics.UpdateUdtItems"; public static EntryPointInfo Info => new EntryPointInfo(typeof(UpdateUdtItems)); - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { var udt = __in__; vararr=QArray.Create(10L); return new MyType2((1L,udt.Data.Item2,(arr?.Copy(),udt.Data.Item3.Item2))); }; - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn(MyType2data) => data; - public override IApplyData __dataOut(MyType2data) => data; + public override IApplyData __DataIn__(MyType2data) => data; + public override IApplyData __DataOut__(MyType2data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__, MyType2 udt) { return __m__.Run(udt); @@ -2793,10 +2793,10 @@ internal partial class EmptyInternalOperation : Operation, ICallab String ICallable.FullName => "Microsoft.Quantum.Overrides.emptyFunction"; public static EntryPointInfo Info => new EntryPointInfo(typeof(emptyFunction)); - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn(QVoid data) => data; - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataIn__(QVoid data) => data; + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__) { return __m__.Run(QVoid.Instance); @@ -2817,15 +2817,15 @@ internal partial class EmptyInternalOperation : Operation, ICallab String ICallable.FullName => "Microsoft.Quantum.Testing.intFunction"; public static EntryPointInfo Info => new EntryPointInfo(typeof(intFunction)); - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { return 1L; }; - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn(QVoid data) => data; - public override IApplyData __dataOut(Int64 data) => new QTuple(data); + public override IApplyData __DataIn__(QVoid data) => data; + public override IApplyData __DataOut__(Int64 data) => new QTuple(data); public static System.Threading.Tasks.Task Run(IOperationFactory __m__) { return __m__.Run(QVoid.Instance); @@ -2855,16 +2855,16 @@ internal partial class EmptyInternalOperation : Operation, ICallab String ICallable.FullName => "Microsoft.Quantum.Testing.powFunction"; public static EntryPointInfo<(Int64, Int64), Int64> Info => new EntryPointInfo<(Int64, Int64), Int64>(typeof(powFunction)); - public override Func<(Int64,Int64), Int64> Body => (__in__) => + public override Func<(Int64,Int64), Int64> __Body__ => (__in__) => { var (x,y) = __in__; return x.Pow(y); }; - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn((Int64,Int64) data) => new In(data); - public override IApplyData __dataOut(Int64 data) => new QTuple(data); + public override IApplyData __DataIn__((Int64,Int64) data) => new In(data); + public override IApplyData __DataOut__(Int64 data) => new QTuple(data); public static System.Threading.Tasks.Task Run(IOperationFactory __m__, Int64 x, Int64 y) { return __m__.Run((x, y)); @@ -2894,16 +2894,16 @@ internal partial class EmptyInternalOperation : Operation, ICallab String ICallable.FullName => "Microsoft.Quantum.Testing.bigPowFunction"; public static EntryPointInfo<(System.Numerics.BigInteger, Int64), System.Numerics.BigInteger> Info => new EntryPointInfo<(System.Numerics.BigInteger, Int64), System.Numerics.BigInteger>(typeof(bigPowFunction)); - public override Func<(System.Numerics.BigInteger,Int64), System.Numerics.BigInteger> Body => (__in__) => + public override Func<(System.Numerics.BigInteger,Int64), System.Numerics.BigInteger> __Body__ => (__in__) => { var (x,y) = __in__; return x.Pow(y); }; - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn((System.Numerics.BigInteger,Int64) data) => new In(data); - public override IApplyData __dataOut(System.Numerics.BigInteger data) => new QTuple(data); + public override IApplyData __DataIn__((System.Numerics.BigInteger,Int64) data) => new In(data); + public override IApplyData __DataOut__(System.Numerics.BigInteger data) => new QTuple(data); public static System.Threading.Tasks.Task Run(IOperationFactory __m__, System.Numerics.BigInteger x, Int64 y) { return __m__.Run((x, y)); @@ -2940,7 +2940,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab } } - public void Deconstruct() + public void __Deconstruct__() { } } @@ -2966,7 +2966,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab } } - public void Deconstruct() + public void __Deconstruct__() { } } @@ -2992,7 +2992,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab } } - public void Deconstruct() + public void __Deconstruct__() { } } @@ -3018,7 +3018,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab } } - public void Deconstruct() + public void __Deconstruct__() { } } @@ -3044,7 +3044,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab } } - public void Deconstruct() + public void __Deconstruct__() { } } @@ -3072,7 +3072,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab } } - public void Deconstruct(out Int64 item1, out IQArray item2) + public void __Deconstruct__(out Int64 item1, out IQArray item2) { item1 = Data.Item1; item2 = Data.Item2; @@ -3094,7 +3094,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void Deconstruct() + public void __Deconstruct__() { } } @@ -3115,7 +3115,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab public udt_Real Item1 => Data.Item1; public udt_Real Item2 => Data.Item2; System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void Deconstruct(out udt_Real item1, out udt_Real item2) + public void __Deconstruct__(out udt_Real item1, out udt_Real item2) { item1 = Data.Item1; item2 = Data.Item2; @@ -3137,7 +3137,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void Deconstruct() + public void __Deconstruct__() { } } @@ -3159,7 +3159,7 @@ internal class InternalType : UDTBase, IApplyData System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void Deconstruct() + public void __Deconstruct__() { } } @@ -3184,7 +3184,7 @@ public class NamedTuple : UDTBase<((Int64,Double),Int64)>, IApplyData public (Int64,Double) Item1 => Data.Item1; public Int64 Item2 => Data.Item2; System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void Deconstruct(out (Int64,Double) item1, out Int64 item2) + public void __Deconstruct__(out (Int64,Double) item1, out Int64 item2) { item1 = Data.Item1; item2 = Data.Item2; @@ -3242,7 +3242,7 @@ namespace Microsoft.Quantum public Int64 Item1 => Data.Item1; public Int64 Item2 => Data.Item2; System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void Deconstruct(out Int64 item1, out Int64 item2) + public void __Deconstruct__(out Int64 item1, out Int64 item2) { item1 = Data.Item1; item2 = Data.Item2; @@ -3262,7 +3262,7 @@ namespace Microsoft.Quantum public Int64 Item1 => Data.Item1; public Int64 Item2 => Data.Item2; System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void Deconstruct(out Int64 item1, out Int64 item2) + public void __Deconstruct__(out Int64 item1, out Int64 item2) { item1 = Data.Item1; item2 = Data.Item2; @@ -3277,9 +3277,9 @@ namespace Microsoft.Quantum String ICallable.Name => "emptyFunction"; String ICallable.FullName => "Microsoft.Quantum.emptyFunction"; - public override void Init() { } - public override IApplyData __dataIn(Pair data) => data; - public override IApplyData __dataOut(QVoid data) => data; + public override void __Init__() { } + public override IApplyData __DataIn__(Pair data) => data; + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__, Pair p) { return __m__.Run(p); @@ -3294,9 +3294,9 @@ namespace Microsoft.Quantum String ICallable.Name => "emptyOperation"; String ICallable.FullName => "Microsoft.Quantum.emptyOperation"; - public override void Init() { } - public override IApplyData __dataIn(QVoid data) => data; - public override IApplyData __dataOut(QVoid data) => data; + public override void __Init__() { } + public override IApplyData __DataIn__(QVoid data) => data; + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__) { return __m__.Run(QVoid.Instance); @@ -3352,7 +3352,7 @@ namespace Microsoft.Quantum public Int64 Item2 => Data.Item2; System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void Deconstruct(out Int64 item1, out Int64 item2) + public void __Deconstruct__(out Int64 item1, out Int64 item2) { item1 = Data.Item1; item2 = Data.Item2; @@ -3376,7 +3376,7 @@ namespace Microsoft.Quantum public ((Boolean, String), Int64) Item2 => Data.Item2; System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void Deconstruct(out Double item1, out ((Boolean, String), Int64) item2) + public void __Deconstruct__(out Double item1, out ((Boolean, String), Int64) item2) { item1 = Data.Item1; item2 = Data.Item2; @@ -3432,7 +3432,7 @@ namespace Microsoft.Quantum.Tests.Inline String ICallable.Name => "HelloWorld"; String ICallable.FullName => "Microsoft.Quantum.Tests.Inline.HelloWorld"; - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { var n = __in__; #line 9 "%%" @@ -3441,10 +3441,10 @@ namespace Microsoft.Quantum.Tests.Inline return r; }; - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn(Int64 data) => new QTuple(data); - public override IApplyData __dataOut(Int64 data) => new QTuple(data); + public override IApplyData __DataIn__(Int64 data) => new QTuple(data); + public override IApplyData __DataOut__(Int64 data) => new QTuple(data); public static System.Threading.Tasks.Task Run(IOperationFactory __m__, Int64 n) { return __m__.Run(n); @@ -3507,7 +3507,7 @@ namespace Microsoft.Quantum.Tests.LineNumbers set; } - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { var n = __in__; #line 11 "%%" @@ -3561,15 +3561,15 @@ namespace Microsoft.Quantum.Tests.LineNumbers } ; - public override void Init() + public override void __Init__() { - this.Allocate = this.Factory.Get(typeof(global::Microsoft.Quantum.Intrinsic.Allocate)); - this.Release = this.Factory.Get(typeof(global::Microsoft.Quantum.Intrinsic.Release)); - this.X = this.Factory.Get>(typeof(global::Microsoft.Quantum.Intrinsic.X)); + this.Allocate = this.__Factory__.Get(typeof(global::Microsoft.Quantum.Intrinsic.Allocate)); + this.Release = this.__Factory__.Get(typeof(global::Microsoft.Quantum.Intrinsic.Release)); + this.X = this.__Factory__.Get>(typeof(global::Microsoft.Quantum.Intrinsic.X)); } - public override IApplyData __dataIn(Int64 data) => new QTuple(data); - public override IApplyData __dataOut(Result data) => new QTuple(data); + public override IApplyData __DataIn__(Int64 data) => new QTuple(data); + public override IApplyData __DataOut__(Result data) => new QTuple(data); public static System.Threading.Tasks.Task Run(IOperationFactory __m__, Int64 n) { return __m__.Run(n); @@ -3625,7 +3625,7 @@ namespace Microsoft.Quantum.Core } System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void Deconstruct() + public void __Deconstruct__() { } } @@ -3645,7 +3645,7 @@ namespace Microsoft.Quantum.Diagnostics } System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void Deconstruct() + public void __Deconstruct__() { } } @@ -3728,19 +3728,19 @@ namespace Microsoft.Quantum.Tests.UnitTests String ICallable.Name => "UnitTest1"; String ICallable.FullName => "Microsoft.Quantum.Tests.UnitTests.UnitTest1"; - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { #line hidden return QVoid.Instance; } ; - public override void Init() + public override void __Init__() { } - public override IApplyData __dataIn(QVoid data) => data; - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataIn__(QVoid data) => data; + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__) { return __m__.Run(QVoid.Instance); @@ -3789,19 +3789,19 @@ namespace Microsoft.Quantum.Tests.UnitTests String ICallable.Name => "UnitTest2"; String ICallable.FullName => "Microsoft.Quantum.Tests.UnitTests.UnitTest2"; - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { #line hidden return QVoid.Instance; } ; - public override void Init() + public override void __Init__() { } - public override IApplyData __dataIn(QVoid data) => data; - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataIn__(QVoid data) => data; + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__) { return __m__.Run(QVoid.Instance); From 254f42f9a7e973bb51f70dcc3e6ed29d1b79eabc Mon Sep 17 00:00:00 2001 From: Sarah Marshall Date: Wed, 19 Aug 2020 10:06:30 -0700 Subject: [PATCH 09/17] Add new tests --- .../Simulators.Tests/Circuits/MemberNames.qs | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/Simulation/Simulators.Tests/Circuits/MemberNames.qs diff --git a/src/Simulation/Simulators.Tests/Circuits/MemberNames.qs b/src/Simulation/Simulators.Tests/Circuits/MemberNames.qs new file mode 100644 index 00000000000..e76c78d8e61 --- /dev/null +++ b/src/Simulation/Simulators.Tests/Circuits/MemberNames.qs @@ -0,0 +1,64 @@ +namespace Microsoft.Quantum.Simulation.Simulators.Tests.Circuits.MemberNames { + open Microsoft.Quantum.Diagnostics; + open Microsoft.Quantum.Simulation.Simulators.Tests.Circuits; + + newtype Foo = (Foo : Int); + + newtype Items = (Item2 : Int, Item1 : Int); + + // TODO: + // newtype Bar = (Data : Int); + + operation Body() : Unit { } + + operation AdjointBody() : Unit is Adj { } + + operation ControlledBody() : Unit is Ctl { } + + operation ControlledAdjointBody() : Unit is Adj + Ctl { } + + operation Init() : Unit { } + + operation Run() : Unit { } + + operation Info() : Unit { } + + @Test("QuantumSimulator") + operation SupportsReservedOperationNames() : Unit { + Body(); + AdjointBody(); + ControlledBody(); + ControlledAdjointBody(); + Init(); + Run(); + Info(); + } + + @Test("QuantumSimulator") + operation SupportsConfusingQualifiedNames() : Unit { + FooBar.Baz(); + Foo.Bar.Baz(); + } + + @Test("QuantumSimulator") + operation SupportsReservedNamedItems() : Unit { + let foo = Foo(7); + AssertEqual(7, foo::Foo); + + let items = Items(3, 4); + AssertEqual(3, items::Item2); + AssertEqual(4, items::Item1); + + // TODO: + // let bar = Bar(10); + // AssertEqual(10, bar::Data); + } +} + +namespace FooBar { + function Baz() : Unit { } +} + +namespace Foo.Bar { + function Baz() : Unit { } +} From 724faf6e62203d9578c011291e1c5540461f976a Mon Sep 17 00:00:00 2001 From: Sarah Marshall Date: Wed, 19 Aug 2020 10:07:31 -0700 Subject: [PATCH 10/17] Update ItemN regex --- src/Simulation/CsharpGeneration/SimulationCode.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Simulation/CsharpGeneration/SimulationCode.fs b/src/Simulation/CsharpGeneration/SimulationCode.fs index 1a1825a349e..e126a1a4be4 100644 --- a/src/Simulation/CsharpGeneration/SimulationCode.fs +++ b/src/Simulation/CsharpGeneration/SimulationCode.fs @@ -59,7 +59,7 @@ module SimulationCode = | "Info" | "Run" -> true | _ -> - Regex.IsMatch (name, "^Item\d+") || + Regex.IsMatch (name, @"^Item\d+$") || parent |> Option.exists (fun current' -> name = current'.Name.Value) if isReserved then name + "__" else name From dc789cb0f042688bfa5ff7c22b7ffdff2d085be1 Mon Sep 17 00:00:00 2001 From: Sarah Marshall Date: Wed, 19 Aug 2020 11:36:09 -0700 Subject: [PATCH 11/17] Always append __ for referenced callable properties --- .../CsharpGeneration/SimulationCode.fs | 28 ++++++++----------- .../Simulators/QuantumSimulator/ExpFrac.cs | 8 +++--- .../Simulators/QuantumSimulator/RFrac.cs | 8 +++--- 3 files changed, 19 insertions(+), 25 deletions(-) diff --git a/src/Simulation/CsharpGeneration/SimulationCode.fs b/src/Simulation/CsharpGeneration/SimulationCode.fs index e126a1a4be4..60ac9c2f237 100644 --- a/src/Simulation/CsharpGeneration/SimulationCode.fs +++ b/src/Simulation/CsharpGeneration/SimulationCode.fs @@ -79,6 +79,11 @@ module SimulationCode = else not (autoNamespaces |> List.contains op.Namespace.Value) + let getOpName context n = + if isCurrentOp context n then Directives.Self + elif needsFullPath context n then prependNamespaceString n + "__" + else n.Name.Value + "__" + let getTypeParameters types = let findAll (t: ResolvedType) = t.ExtractAll (fun item -> item.Resolution |> function | QsTypeKind.TypeParameter tp -> seq{ yield tp } @@ -429,14 +434,8 @@ module SimulationCode = and buildId id : ExpressionSyntax = match id with - | LocalVariable n-> n.Value |> ``ident`` :> ExpressionSyntax - | GlobalCallable n -> - if isCurrentOp context n then - Directives.Self |> ``ident`` :> ExpressionSyntax - elif needsFullPath context n then - prependNamespaceString n |> userDefinedName context.current |> ``ident`` :> ExpressionSyntax - else - n.Name.Value |> userDefinedName context.current |> ``ident`` :> ExpressionSyntax + | LocalVariable n -> n.Value |> ident :> ExpressionSyntax + | GlobalCallable n -> getOpName context n |> ident :> ExpressionSyntax | InvalidIdentifier -> // TODO: Diagnostics failwith "Received InvalidIdentifier" @@ -780,8 +779,8 @@ module SimulationCode = override this.OnQubitScope (using:QsQubitScope) = let (alloc, release) = match using.Kind with - | Allocate -> ("Allocate", "Release") - | Borrow -> ("Borrow", "Return") + | Allocate -> "Allocate__", "Release__" + | Borrow -> "Borrow__", "Return__" let rec removeDiscarded sym = match sym with | VariableName _ -> sym @@ -867,11 +866,6 @@ module SimulationCode = seeker.Namespaces.OnCallableDeclaration od |> ignore seeker.SharedState |> Seq.toList - let getOpName context n = - if needsFullPath context n then prependNamespaceString n - else if isCurrentOp context n then Directives.Self - else n.Name.Value - let getTypeOfOp context (n: QsQualifiedName) = let name = let sameNamespace = match context.current with | None -> false | Some o -> o.Namespace = n.Namespace @@ -892,7 +886,7 @@ module SimulationCode = let parameters = [] let body = let buildOne n = - let name = getOpName context n |> userDefinedName context.current + let name = getOpName context n let lhs = ``ident`` "this" <|.|> ``ident`` name let rhs = if (isCurrentOp context n) && not (isGeneric context n) then @@ -938,7 +932,7 @@ module SimulationCode = /// eg: /// protected opType opName { get; } let signature = roslynCallableTypeName context qualifiedName - let name = getOpName context qualifiedName |> userDefinedName context.current + let name = getOpName context qualifiedName let modifiers = getPropertyModifiers qualifiedName ``prop`` signature name modifiers :> MemberDeclarationSyntax diff --git a/src/Simulation/Simulators/QuantumSimulator/ExpFrac.cs b/src/Simulation/Simulators/QuantumSimulator/ExpFrac.cs index 446ac3c2efb..83bfd33862b 100644 --- a/src/Simulation/Simulators/QuantumSimulator/ExpFrac.cs +++ b/src/Simulation/Simulators/QuantumSimulator/ExpFrac.cs @@ -23,28 +23,28 @@ public static double Angle(long numerator, long power) => { var (paulis, numerator, power, qubits) = args; var angle = Angle(numerator, power); - return Exp.Apply((paulis, angle, qubits)); + return Exp__.Apply((paulis, angle, qubits)); }; public override Func<(IQArray, long, long, IQArray), QVoid> __AdjointBody__ => (args) => { var (paulis, numerator, power, qubits) = args; var angle = Angle(numerator, power); - return Exp.Adjoint.Apply((paulis, angle, qubits)); + return Exp__.Adjoint.Apply((paulis, angle, qubits)); }; public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> __ControlledBody__ => (args) => { var (ctrls, (paulis, numerator, power, qubits)) = args; var angle = Angle(numerator, power); - return Exp.Controlled.Apply((ctrls, (paulis, angle, qubits))); + return Exp__.Controlled.Apply((ctrls, (paulis, angle, qubits))); }; public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> __ControlledAdjointBody__ => (args) => { var (ctrls, (paulis, numerator, power, qubits)) = args; var angle = Angle(numerator, power); - return Exp.Adjoint.Controlled.Apply((ctrls, (paulis, angle, qubits))); + return Exp__.Adjoint.Controlled.Apply((ctrls, (paulis, angle, qubits))); }; } } diff --git a/src/Simulation/Simulators/QuantumSimulator/RFrac.cs b/src/Simulation/Simulators/QuantumSimulator/RFrac.cs index 65045d68816..7e09e5a6b5a 100644 --- a/src/Simulation/Simulators/QuantumSimulator/RFrac.cs +++ b/src/Simulation/Simulators/QuantumSimulator/RFrac.cs @@ -23,28 +23,28 @@ public static double Angle(long numerator, long power) => { var (pauli, numerator, power, qubit) = args; var angle = Angle(numerator, power); - return R.Apply((pauli, angle, qubit)); + return R__.Apply((pauli, angle, qubit)); }; public override Func<(Pauli, long, long, Qubit), QVoid> __AdjointBody__ => (args) => { var (pauli, numerator, power, qubit) = args; var angle = Angle(numerator, power); - return R.Adjoint.Apply((pauli, angle, qubit)); + return R__.Adjoint.Apply((pauli, angle, qubit)); }; public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> __ControlledBody__ => (args) => { var (ctrls, (pauli, numerator, power, qubit)) = args; var angle = Angle(numerator, power); - return R.Controlled.Apply((ctrls, (pauli, angle, qubit))); + return R__.Controlled.Apply((ctrls, (pauli, angle, qubit))); }; public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> __ControlledAdjointBody__ => (args) => { var (ctrls, (pauli, numerator, power, qubit)) = args; var angle = Angle(numerator, power); - return R.Adjoint.Controlled.Apply((ctrls, (pauli, angle, qubit))); + return R__.Adjoint.Controlled.Apply((ctrls, (pauli, angle, qubit))); }; } } From 1805a97e38e983cd523fc505160332a0f61db72d Mon Sep 17 00:00:00 2001 From: Sarah Marshall Date: Wed, 19 Aug 2020 11:57:03 -0700 Subject: [PATCH 12/17] Don't append __ when name already contains __ --- src/Simulation/CsharpGeneration/SimulationCode.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Simulation/CsharpGeneration/SimulationCode.fs b/src/Simulation/CsharpGeneration/SimulationCode.fs index 60ac9c2f237..94201297d7d 100644 --- a/src/Simulation/CsharpGeneration/SimulationCode.fs +++ b/src/Simulation/CsharpGeneration/SimulationCode.fs @@ -81,7 +81,7 @@ module SimulationCode = let getOpName context n = if isCurrentOp context n then Directives.Self - elif needsFullPath context n then prependNamespaceString n + "__" + elif needsFullPath context n then prependNamespaceString n else n.Name.Value + "__" let getTypeParameters types = From 5ab74fa771e950e523b82df3b3723c74fbeff5fc Mon Sep 17 00:00:00 2001 From: Sarah Marshall Date: Wed, 19 Aug 2020 12:40:39 -0700 Subject: [PATCH 13/17] Update tests --- .../SimulationCodeTests.fs | 344 +++++++++--------- 1 file changed, 172 insertions(+), 172 deletions(-) diff --git a/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs b/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs index 53928582860..772e09686a9 100644 --- a/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs +++ b/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs @@ -878,37 +878,37 @@ namespace N1 |> testOne genU2 [ - template "Allocate" "Allocate" "global::Microsoft.Quantum.Intrinsic.Allocate" + template "Allocate__" "Allocate" "global::Microsoft.Quantum.Intrinsic.Allocate" template "Microsoft__Quantum__Intrinsic__H" "IUnitary" "global::Microsoft.Quantum.Intrinsic.H" - template "H" "ICallable" "H" - template "Release" "Release" "global::Microsoft.Quantum.Intrinsic.Release" + template "H__" "ICallable" "H" + template "Release__" "Release" "global::Microsoft.Quantum.Intrinsic.Release" template "Microsoft__Quantum__Overrides__emptyFunction" "ICallable" "global::Microsoft.Quantum.Overrides.emptyFunction" - template "emptyFunction" "ICallable" "emptyFunction" + template "emptyFunction__" "ICallable" "emptyFunction" ] |> testOne duplicatedDefinitionsCaller [ - template "Allocate" "Allocate" "global::Microsoft.Quantum.Intrinsic.Allocate" - template "CNOT" "IAdjointable<(Qubit, Qubit)>" "global::Microsoft.Quantum.Intrinsic.CNOT" + template "Allocate__" "Allocate" "global::Microsoft.Quantum.Intrinsic.Allocate" + template "CNOT__" "IAdjointable<(Qubit, Qubit)>" "global::Microsoft.Quantum.Intrinsic.CNOT" template "Microsoft__Quantum__Testing__Hold" "ICallable" "global::Microsoft.Quantum.Testing.Hold<>" - template "Release" "Release" "global::Microsoft.Quantum.Intrinsic.Release" - template "ResultToString" "ICallable" "ResultToString" - template "X" "IUnitary" "global::Microsoft.Quantum.Intrinsic.X" - template "genIter" "IUnitary" "genIter<>" - template "genMapper" "ICallable" "genMapper<,>" - template "genU1" "IUnitary" "genU1<>" + template "Release__" "Release" "global::Microsoft.Quantum.Intrinsic.Release" + template "ResultToString__" "ICallable" "ResultToString" + template "X__" "IUnitary" "global::Microsoft.Quantum.Intrinsic.X" + template "genIter__" "IUnitary" "genIter<>" + template "genMapper__" "ICallable" "genMapper<,>" + template "genU1__" "IUnitary" "genU1<>" template "Microsoft__Quantum__Testing__noOpGeneric" "IUnitary" "global::Microsoft.Quantum.Testing.noOpGeneric<>" template "Microsoft__Quantum__Testing__noOpResult" "IUnitary" "global::Microsoft.Quantum.Testing.noOpResult" ] |> testOne usesGenerics [ - template "genericWithMultipleTypeParams" "ICallable" "genericWithMultipleTypeParams<,,>" + template "genericWithMultipleTypeParams__" "ICallable" "genericWithMultipleTypeParams<,,>" ] |> testOne callsGenericWithMultipleTypeParams [ - template "Z" "IUnitary" "global::Microsoft.Quantum.Intrinsic.Z" + template "Z__" "IUnitary" "global::Microsoft.Quantum.Intrinsic.Z" "this.self = this;" ] |> testOne selfInvokingOperation @@ -981,27 +981,27 @@ namespace N1 let template = sprintf @"protected %s %s { get; set; }" [ - template "Allocate" "Allocate" - template "IAdjointable<(Qubit,Qubit)>" "CNOT" + template "Allocate" "Allocate__" + template "IAdjointable<(Qubit,Qubit)>" "CNOT__" template "ICallable" "Microsoft__Quantum__Testing__Hold" - template "Release" "Release" - template "ICallable" "ResultToString" - template "IUnitary" "X" - template "IUnitary" "genIter" - template "ICallable" "genMapper" - template "IUnitary" "genU1" + template "Release" "Release__" + template "ICallable" "ResultToString__" + template "IUnitary" "X__" + template "IUnitary" "genIter__" + template "ICallable" "genMapper__" + template "IUnitary" "genU1__" template "IUnitary" "Microsoft__Quantum__Testing__noOpGeneric" template "IUnitary" "Microsoft__Quantum__Testing__noOpResult" ] |> testOne usesGenerics [ - template "ICallable" "genericWithMultipleTypeParams" + template "ICallable" "genericWithMultipleTypeParams__" ] |> testOne callsGenericWithMultipleTypeParams [ - template "IUnitary" "Z" + template "IUnitary" "Z__" template "IAdjointable" "self" ] |> testOne selfInvokingOperation @@ -1094,37 +1094,37 @@ namespace N1 |> testOne (applyVisitor zeroQubitOperation) [ - "X.Apply(q1);" + "X__.Apply(q1);" ] |> testOne (applyVisitor oneQubitOperation) [ - "X.Adjoint.Apply(q1);" + "X__.Adjoint.Apply(q1);" ] |> testOne (adjointVisitor oneQubitOperation) [ "var (q2, r) = t1; " - "CNOT.Apply((q1,q2)); " - "R.Apply((r,q1)); " + "CNOT__.Apply((q1,q2)); " + "R__.Apply((r,q1)); " ] |> testOne (applyVisitor twoQubitOperation) [ "var (q2, r) = t1; " - "R.Adjoint.Apply((r,q1));" - "CNOT.Adjoint.Apply((q1,q2));" + "R__.Adjoint.Apply((r,q1));" + "CNOT__.Adjoint.Apply((q1,q2));" ] |> testOne (adjointVisitor twoQubitOperation) [ - "three_op1.Apply((q1,q2));" - "three_op1.Apply((q2,q1));" - "three_op1.Apply((q1,q2));" + "three_op1__.Apply((q1,q2));" + "three_op1__.Apply((q2,q1));" + "three_op1__.Apply((q1,q2));" ] |> testOne (applyVisitor threeQubitOperation) [ - "Z.Adjoint.Apply(q1);" + "Z__.Adjoint.Apply(q1);" "self.Apply(q1);" ] |> testOne (adjointVisitor selfInvokingOperation) @@ -1166,7 +1166,7 @@ namespace N1 let testOne = testOneBody [ - "X.Apply(q1);" + "X__.Apply(q1);" ] |> testOne (applyVisitor oneQubitOperation) @@ -1180,7 +1180,7 @@ namespace N1 |> testOne (applyVisitor composeImpl) [ - "return composeImpl.Partial((second, first, _));" + "return composeImpl__.Partial((second, first, _));" ] |> testOne (applyVisitor compose) @@ -1189,22 +1189,22 @@ namespace N1 let ``usesGenerics body`` () = [ "var a = (IQArray)new QArray(Result.One, Result.Zero, Result.Zero);" - "var s = (IQArray)new QArray(ResultToString.Apply(a[0L]), ResultToString.Apply(a[1L]));" + "var s = (IQArray)new QArray(ResultToString__.Apply(a[0L]), ResultToString__.Apply(a[1L]));" "Microsoft__Quantum__Testing__noOpResult.Apply(a[0L]);" """ { - var qubits = Allocate.Apply(3L); + var qubits = Allocate__.Apply(3L); #line hidden bool __arg1__ = true; try { - var op = Microsoft__Quantum__Testing__Hold.Partial(new Func((__arg2__) => (CNOT, (qubits[0L], qubits[1L]), __arg2__))); + var op = Microsoft__Quantum__Testing__Hold.Partial(new Func((__arg2__) => (CNOT__, (qubits[0L], qubits[1L]), __arg2__))); op.Apply(QVoid.Instance); Microsoft__Quantum__Testing__noOpGeneric.Apply(qubits[0L]); Microsoft__Quantum__Testing__noOpGeneric.Apply(a[0L]); - genIter.Apply((X, qubits)); + genIter__.Apply((X__, qubits)); } #line hidden catch @@ -1217,17 +1217,17 @@ namespace N1 { if (__arg1__) { - Release.Apply(qubits); + Release__.Apply(qubits); } } } """ - "genIter.Apply((Microsoft__Quantum__Testing__noOpResult, a));" + "genIter__.Apply((Microsoft__Quantum__Testing__noOpResult, a));" """ - genIter.Apply((genU1, genMapper.Apply>((ResultToString, a)))); + genIter__.Apply((genU1__, genMapper__.Apply>((ResultToString__, a)))); """ - "genIter.Apply((genU1, s));" - "genIter.Apply((genU1, a));" + "genIter__.Apply((genU1__, s));" + "genIter__.Apply((genU1__, a));" ] |> testOneBody (applyVisitor usesGenerics) @@ -1235,20 +1235,20 @@ namespace N1 [] let ``callTests body`` () = [ - "var plain = new call_plain(X);" - "var adj = new call_adj(X);" - "var ctr = new call_ctr(X);" - "var uni = new call_uni(X);" + "var plain = new call_plain(X__);" + "var adj = new call_adj(X__);" + "var ctr = new call_ctr(X__);" + "var uni = new call_uni(X__);" - "X.Apply(qubits.Data[0L]);" - "X.Adjoint.Apply(qubits.Data[0L]);" - "X.Controlled.Apply((qubits.Data.Slice(new QRange(1L,5L)), qubits.Data[0L]));" + "X__.Apply(qubits.Data[0L]);" + "X__.Adjoint.Apply(qubits.Data[0L]);" + "X__.Controlled.Apply((qubits.Data.Slice(new QRange(1L,5L)), qubits.Data[0L]));" - "call_target1.Apply((1L, X, X, X, X));" - "call_target1.Apply((1L, plain.Data, adj.Data, ctr.Data, uni.Data));" + "call_target1__.Apply((1L, X__, X__, X__, X__));" + "call_target1__.Apply((1L, plain.Data, adj.Data, ctr.Data, uni.Data));" - "call_target2.Apply((1L, (Result.Zero, X), (Result.Zero, X), (Result.Zero, X), (Result.Zero, X)));" - "call_target2.Apply((2L, (Result.One, plain.Data), (Result.One, adj.Data), (Result.One, ctr.Data), (Result.One, uni.Data)));" + "call_target2__.Apply((1L, (Result.Zero, X__), (Result.Zero, X__), (Result.Zero, X__), (Result.Zero, X__)));" + "call_target2__.Apply((2L, (Result.One, plain.Data), (Result.One, adj.Data), (Result.One, ctr.Data), (Result.One, uni.Data)));" ] |> testOneBody (applyVisitor callTests) @@ -1258,7 +1258,7 @@ namespace N1 [ "var q2 = q1;" - "var r = M.Apply(q1);" + "var r = M__.Apply(q1);" "var i = 1.1D;" "var iZero = 0L;" @@ -1291,7 +1291,7 @@ namespace N1 "var __arg1__ = t;" "var __arg2__ = t;" - "return let_f0.Apply(n);" + "return let_f0__.Apply(n);" ] |> testOneBody (applyVisitor letsOperations) @@ -1334,7 +1334,7 @@ namespace N1 """ if ((r == Result.One)) { - n = (if_f0.Apply(QVoid.Instance) * i); + n = (if_f0__.Apply(QVoid.Instance) * i); } """ """ @@ -1358,7 +1358,7 @@ namespace N1 } else { - return ((p==Pauli.PauliI)?3L:if_f0.Apply(QVoid.Instance)); + return ((p==Pauli.PauliI)?3L:if_f0__.Apply(QVoid.Instance)); } """ ] @@ -1382,7 +1382,7 @@ namespace N1 @"foreach (var n in range) #line hidden { - result = ((range.End + result) + (n * -(foreach_f2.Apply((n, 4L))))); + result = ((range.End + result) + (n * -(foreach_f2__.Apply((n, 4L))))); }" """ if ((result > 10L)) @@ -1420,7 +1420,7 @@ namespace N1 [] let ``test Length dependency`` () = [ - "iter.Apply((Length, new QArray>(new QArray(Result.One), new QArray(Result.Zero, Result.One))));" + "iter__.Apply((Length__, new QArray>(new QArray(Result.One), new QArray(Result.Zero, Result.One))));" ] |> testOneBody (applyVisitor testLengthDependency) @@ -1481,22 +1481,22 @@ namespace N1 [ """ { - var qubits = Allocate.Apply(i); + var qubits = Allocate__.Apply(i); #line hidden bool __arg1__ = true; try { while (true) { - var res = repeat_op0.Apply(new repeat_udt0((0L, qubits))); + var res = repeat_op0__.Apply(new repeat_udt0((0L, qubits))); - if ((repeat_op1.Apply((0L, qubits)) == Result.One)) + if ((repeat_op1__.Apply((0L, qubits)) == Result.One)) { break; } else { - res = repeat_op2.Apply((3D, new repeat_udt0(((i-1L), qubits)))); + res = repeat_op2__.Apply((3D, new repeat_udt0(((i-1L), qubits)))); } } } @@ -1511,7 +1511,7 @@ namespace N1 { if (__arg1__) { - Release.Apply(qubits); + Release__.Apply(qubits); } } } @@ -1524,14 +1524,14 @@ namespace N1 [ """ { - var q = Allocate.Apply(); + var q = Allocate__.Apply(); #line hidden bool __arg1__ = true; try { var flag = true; - (flag ? X : Z).Apply(q); - alloc_op0.Apply(q); + (flag ? X__ : Z__).Apply(q); + alloc_op0__.Apply(q); } #line hidden catch @@ -1544,18 +1544,18 @@ namespace N1 { if (__arg1__) { - Release.Apply(q); + Release__.Apply(q); } } }""" """ { - var qs = Allocate.Apply(n); + var qs = Allocate__.Apply(n); #line hidden bool __arg2__ = true; try { - alloc_op0.Apply(qs[(n-1L)]); + alloc_op0__.Apply(qs[(n-1L)]); } #line hidden catch @@ -1568,19 +1568,19 @@ namespace N1 { if (__arg2__) { - Release.Apply(qs); + Release__.Apply(qs); } } }""" """ { - var (q1, (q2, (__arg3__, q3, __arg4__, q4))) = (Allocate.Apply(), ((Allocate.Apply(), Allocate.Apply(2L)), (Allocate.Apply(), Allocate.Apply(n), Allocate.Apply((n-1L)), Allocate.Apply(4L)))); + var (q1, (q2, (__arg3__, q3, __arg4__, q4))) = (Allocate__.Apply(), ((Allocate__.Apply(), Allocate__.Apply(2L)), (Allocate__.Apply(), Allocate__.Apply(n), Allocate__.Apply((n-1L)), Allocate__.Apply(4L)))); #line hidden bool __arg5__ = true; try { - alloc_op0.Apply(q1); - alloc_op0.Apply(q3[1L]); + alloc_op0__.Apply(q1); + alloc_op0__.Apply(q3[1L]); } #line hidden catch @@ -1593,13 +1593,13 @@ namespace N1 { if (__arg5__) { - Release.Apply(q1); - Release.Apply(q2.Item1); - Release.Apply(q2.Item2); - Release.Apply(__arg3__); - Release.Apply(q3); - Release.Apply(__arg4__); - Release.Apply(q4); + Release__.Apply(q1); + Release__.Apply(q2.Item1); + Release__.Apply(q2.Item2); + Release__.Apply(__arg3__); + Release__.Apply(q3); + Release__.Apply(__arg4__); + Release__.Apply(q4); } } }""" @@ -1609,12 +1609,12 @@ namespace N1 [ """ { - var b = Borrow.Apply(n); + var b = Borrow__.Apply(n); #line hidden bool __arg1__ = true; try { - alloc_op0.Apply(b[(n-1L)]); + alloc_op0__.Apply(b[(n-1L)]); } #line hidden catch @@ -1627,25 +1627,25 @@ namespace N1 { if (__arg1__) { - Return.Apply(b); + Return__.Apply(b); } } }""" """ { - var (q1, (q2, (__arg2__, q3))) = (Borrow.Apply(), (Borrow.Apply(2L), (Borrow.Apply(), (Borrow.Apply(n), Borrow.Apply(4L))))); + var (q1, (q2, (__arg2__, q3))) = (Borrow__.Apply(), (Borrow__.Apply(2L), (Borrow__.Apply(), (Borrow__.Apply(n), Borrow__.Apply(4L))))); #line hidden bool __arg3__ = true; try { { - var qt = (Allocate.Apply(), (Allocate.Apply(1L), Allocate.Apply(2L))); + var qt = (Allocate__.Apply(), (Allocate__.Apply(1L), Allocate__.Apply(2L))); #line hidden bool __arg4__ = true; try { var (qt1, qt2) = ((Qubit, (IQArray, IQArray)))qt; - alloc_op0.Apply(qt1); + alloc_op0__.Apply(qt1); } #line hidden catch @@ -1658,15 +1658,15 @@ namespace N1 { if (__arg4__) { - Release.Apply(qt.Item1); - Release.Apply(qt.Item2.Item1); - Release.Apply(qt.Item2.Item2); + Release__.Apply(qt.Item1); + Release__.Apply(qt.Item2.Item1); + Release__.Apply(qt.Item2.Item2); } } } - alloc_op0.Apply(q1); - alloc_op0.Apply(q2[1L]); + alloc_op0__.Apply(q1); + alloc_op0__.Apply(q2[1L]); } #line hidden catch @@ -1679,11 +1679,11 @@ namespace N1 { if (__arg3__) { - Return.Apply(q1); - Return.Apply(q2); - Return.Apply(__arg2__); - Return.Apply(q3.Item1); - Return.Apply(q3.Item2); + Return__.Apply(q1); + Return__.Apply(q2); + Return__.Apply(__arg2__); + Return__.Apply(q3.Item1); + Return__.Apply(q3.Item2); } } }""" @@ -1744,7 +1744,7 @@ namespace N1 { var q1 = __in__; - X.Apply(q1); + X__.Apply(q1); #line hidden return QVoid.Instance; }; @@ -1758,8 +1758,8 @@ namespace N1 var (q2,r) = t1; - CNOT.Apply((q1, q2)); - R.Apply((r, q1)); + CNOT__.Apply((q1, q2)); + R__.Apply((r, q1)); #line hidden return QVoid.Instance; @@ -1773,10 +1773,10 @@ namespace N1 { var (q1,q2,arr1) = __in__; - da_op0.Apply(QVoid.Instance); - da_op1.Adjoint.Apply(q1); - da_op2.Controlled.Apply((new QArray(q1), (1L, q2))); - da_op3.Controlled.Adjoint.Apply((new QArray(q1, q2), (1.1D, Result.One, arr1.Length))); + da_op0__.Apply(QVoid.Instance); + da_op1__.Adjoint.Apply(q1); + da_op2__.Controlled.Apply((new QArray(q1), (1L, q2))); + da_op3__.Controlled.Adjoint.Apply((new QArray(q1, q2), (1.1D, Result.One, arr1.Length))); #line hidden return QVoid.Instance; @@ -1799,7 +1799,7 @@ namespace N1 public override Func<(Qubit, %s, %s, %s, (%s, %s), %s), %s> __Body__ => (__in__) => { var (q1, op0, op1, op2, t1, f1) = __in__; - op1.Apply(OP_1); + op1.Apply(OP_1__); var v0 = op0; var r0 = v0.Apply(q1); var (op3, op4) = t1; @@ -1863,7 +1863,7 @@ namespace N1 "var s1 = (IQArray)qubits.Slice(new QRange(0L,10L));" "var s2 = (IQArray)qubits.Slice(r2);" "var s3 = (IQArray)qubits.Slice(ranges[3L]);" - "var s4 = (IQArray)qubits.Slice(GetMeARange.Apply(QVoid.Instance));" + "var s4 = (IQArray)qubits.Slice(GetMeARange__.Apply(QVoid.Instance));" "return qubits.Slice(new QRange(10L,-(3L),0L));" ] @@ -1946,7 +1946,7 @@ namespace N1 public override Func __AdjointBody__ => (__in__) => { var q1 = __in__; - X.Adjoint.Apply(q1); + X__.Adjoint.Apply(q1); #line hidden return QVoid.Instance; @@ -1960,8 +1960,8 @@ namespace N1 var (q2,r) = t1; - R.Adjoint.Apply((r, q1)); - CNOT.Adjoint.Apply((q1, q2)); + R__.Adjoint.Apply((r, q1)); + CNOT__.Adjoint.Apply((q1, q2)); #line hidden return QVoid.Instance; @@ -1972,9 +1972,9 @@ namespace N1 public override Func<(Qubit,Qubit,Qubits), QVoid> __AdjointBody__ => (__in__) => { var (q1,q2,arr1) = __in__; - three_op1.Adjoint.Apply((q1, q2)); - three_op1.Adjoint.Apply((q2, q1)); - three_op1.Adjoint.Apply((q1, q2)); + three_op1__.Adjoint.Apply((q1, q2)); + three_op1__.Adjoint.Apply((q2, q1)); + three_op1__.Adjoint.Apply((q1, q2)); #line hidden return QVoid.Instance; };""" @@ -2012,7 +2012,7 @@ namespace N1 { var (c, q1) = __in__; - X.Controlled.Apply((c, q1)); + X__.Controlled.Apply((c, q1)); #line hidden return QVoid.Instance; @@ -2024,9 +2024,9 @@ namespace N1 { var (c, (q1, q2, arr1)) = __in__; - three_op1.Controlled.Apply((c, (q1, q2))); - three_op1.Controlled.Apply((c, (q2, q1))); - three_op1.Controlled.Apply((c, (q1, q2))); + three_op1__.Controlled.Apply((c, (q1, q2))); + three_op1__.Controlled.Apply((c, (q2, q1))); + three_op1__.Controlled.Apply((c, (q1, q2))); #line hidden return QVoid.Instance; @@ -2060,7 +2060,7 @@ namespace N1 public override Func<(IQArray, Qubit), QVoid> __ControlledAdjointBody__ => (__in__) => { var (c,q1) = __in__; - X.Controlled.Adjoint.Apply((c, q1)); + X__.Controlled.Adjoint.Apply((c, q1)); #line hidden return QVoid.Instance; };""" @@ -2072,9 +2072,9 @@ namespace N1 { var (c,(q1,q2,arr1)) = __in__; - three_op1.Controlled.Adjoint.Apply((c, (q1, q2))); - three_op1.Controlled.Adjoint.Apply((c, (q2, q1))); - three_op1.Controlled.Adjoint.Apply((c, (q1, q2))); + three_op1__.Controlled.Adjoint.Apply((c, (q1, q2))); + three_op1__.Controlled.Adjoint.Apply((c, (q2, q1))); + three_op1__.Controlled.Adjoint.Apply((c, (q1, q2))); #line hidden return QVoid.Instance; @@ -2085,40 +2085,40 @@ namespace N1 let ``partial application`` () = [ //todo: "partial1Args.Partial(_).Apply(1L);" - "partial3Args + "partial3Args__ .Partial(new Func<(Int64,Double,Result), (Int64,Double,Result)>((__arg1__) => (__arg1__.Item1, __arg1__.Item2, __arg1__.Item3))) .Apply((1L, 3.5D, Result.One));" - "partial3Args + "partial3Args__ .Partial(new Func((__arg2__) => (1L, __arg2__, Result.Zero))) .Apply(3.5D);" - "partial3Args + "partial3Args__ .Partial(new Func<(Int64,Result), (Int64,Double,Result)>((__arg3__) => (__arg3__.Item1, 3.5D, __arg3__.Item2))) .Apply((1L, Result.Zero));" - "partial3Args + "partial3Args__ .Partial(new Func((__arg4__) => (1L, 3.5D, __arg4__))) .Apply(Result.Zero);" - "partial3Args + "partial3Args__ .Partial(new Func<(Double,Result), (Int64,Double,Result)>((__arg5__) => (1L, __arg5__.Item1, __arg5__.Item2))) .Apply((3.5D, Result.Zero));" - "partialInnerTuple + "partialInnerTuple__ .Partial(new Func<(Int64,(Double,Result)), (Int64,(Double,Result))>((__arg6__) => (__arg6__.Item1, (__arg6__.Item2.Item1, __arg6__.Item2.Item2)))) .Apply((1L, (3.5D, Result.One)));" - "partialInnerTuple + "partialInnerTuple__ .Partial(new Func<(Int64,(Double,Result)), (Int64,(Double,Result))>((__arg7__) => (__arg7__.Item1, (__arg7__.Item2.Item1, __arg7__.Item2.Item2)))) .Apply((1L, (3.5D, Result.Zero)));" - "partialInnerTuple + "partialInnerTuple__ .Partial(new Func<(Double,Result), (Int64,(Double,Result))>((__arg8__) => (1L, (__arg8__.Item1, __arg8__.Item2)))) .Apply((3.5D, Result.Zero));" - "partialInnerTuple + "partialInnerTuple__ .Partial(new Func<(Int64,Result), (Int64,(Double,Result))>((__arg9__) => (__arg9__.Item1, (3.5D, __arg9__.Item2)))) .Apply((1L, Result.Zero));" - "partialInnerTuple + "partialInnerTuple__ .Partial(new Func<(Int64,Double), (Int64,(Double,Result))>((__arg10__) => (__arg10__.Item1, (__arg10__.Item2, Result.One)))) .Apply((1L, 3.5D));" - "partialInnerTuple + "partialInnerTuple__ .Partial(new Func((__arg11__) => (1L, (3.5D, __arg11__)))) .Apply(Result.One);" - "partialNestedArgsOp + "partialNestedArgsOp__ .Partial(new Func<((Int64,Int64,Int64),((Double,Double),(Result,Result,Result))), ((Int64,Int64,Int64),((Double,Double),(Result,Result,Result)))>((__arg12__) => ( (__arg12__.Item1.Item1, __arg12__.Item1.Item2, __arg12__.Item1.Item3), @@ -2138,7 +2138,7 @@ namespace N1 ) )) .Apply((1L, ((3.3D, 2D), Result.Zero)));" - "partialNestedArgsOp + "partialNestedArgsOp__ .Partial(new Func<(Int64,((Double,Double),Result)), ((Int64,Int64,Int64),((Double,Double),(Result,Result,Result)))>((__arg14__) => ( (1L, i, __arg14__.Item1), @@ -2158,7 +2158,7 @@ namespace N1 ) )) .Apply((3.3D, Result.Zero));" - "partialNestedArgsOp + "partialNestedArgsOp__ .Partial(new Func<(Int64,(Double,Result)), ((Int64,Int64,Int64),((Double,Double),(Result,Result,Result)))>((__arg16__) => ( (i, __arg16__.Item1, 1L), @@ -2174,20 +2174,20 @@ namespace N1 ) )) .Apply(3.3D);" - "partialGeneric1 + "partialGeneric1__ .Partial(new Func((__arg18__) => (0L, Result.Zero, (__arg18__, Result.One)) )) .Apply(1L);" - "partialGeneric1 + "partialGeneric1__ .Partial(new Func<(Int64, Result), (Int64, Result, (Int64, Result))>((__arg19__) => (__arg19__.Item1, __arg19__.Item2, (1L, Result.One)) )) .Apply((0L, Result.Zero));" - "partialGeneric1.Partial((0L, _, (1L, _))).Apply((Result.Zero, Result.One));" - "partialGeneric2.Partial((0L, Result.Zero, (_, Result.One))).Apply(1L);" - "partialGeneric2.Partial((_, _, (1L, Result.One))).Apply((0L, Result.Zero));" - "partialGeneric2.Partial((0L, _, (1L, _))).Apply((Result.Zero, Result.One));" + "partialGeneric1__.Partial((0L, _, (1L, _))).Apply((Result.Zero, Result.One));" + "partialGeneric2__.Partial((0L, Result.Zero, (_, Result.One))).Apply(1L);" + "partialGeneric2__.Partial((_, _, (1L, Result.One))).Apply((0L, Result.Zero));" + "partialGeneric2__.Partial((0L, _, (1L, _))).Apply((Result.Zero, Result.One));" "partialInput .Partial(new Func<(Double,(Result,Result)), (Int64,(Double,Double),(Result,Result,Result))>((__arg20__) => ( @@ -2202,7 +2202,7 @@ namespace N1 .Partial(new Func, (Double,ICallable,IQArray)>((__arg21__) => ( 1.1D, - partialFunction.Partial(new Func<(Int64,Double), (Int64,Double,Pauli)>((__arg22__) => + partialFunction__.Partial(new Func<(Int64,Double), (Int64,Double,Pauli)>((__arg22__) => ( __arg22__.Item1, __arg22__.Item2, @@ -2216,10 +2216,10 @@ namespace N1 |> testOneBody (applyVisitor partialApplicationTest) [ - "var r1 = partialFunction + "var r1 = partialFunction__ .Partial(new Func<(Int64,Double,Pauli), (Int64,Double,Pauli)>((__arg1__) => (__arg1__.Item1, __arg1__.Item2, __arg1__.Item3))) .Apply((2L, 2.2D, Pauli.PauliY));" - "var r2 = partialFunction + "var r2 = partialFunction__ .Partial(new Func<(Double,Pauli), (Int64,Double,Pauli)>((__arg2__) => (1L, __arg2__.Item1, __arg2__.Item2))) .Partial(new Func((__arg3__) => (3.3D, __arg3__))) .Apply(Pauli.PauliZ);" @@ -2424,12 +2424,12 @@ namespace N1 public static QCIEntryPointInfo Info => new QCIEntryPointInfo(typeof(oneQubitOperation)); - protected IUnitary X { get; set; } + protected IUnitary X__ { get; set; } public override Func __Body__ => (__in__) => { var q1 = __in__; - X.Apply(q1); + X__.Apply(q1); #line hidden return QVoid.Instance; } @@ -2438,7 +2438,7 @@ namespace N1 public override Func __AdjointBody__ => (__in__) => { var q1 = __in__; - X.Adjoint.Apply(q1); + X__.Adjoint.Apply(q1); #line hidden return QVoid.Instance; } @@ -2447,7 +2447,7 @@ namespace N1 public override Func<(IQArray,Qubit), QVoid> __ControlledBody__ => (__in__) => { var (c,q1) = __in__; - X.Controlled.Apply((c, q1)); + X__.Controlled.Apply((c, q1)); #line hidden return QVoid.Instance; } @@ -2456,7 +2456,7 @@ namespace N1 public override Func<(IQArray,Qubit), QVoid> __ControlledAdjointBody__ => (__in__) => { var (c,q1) = __in__; - X.Controlled.Adjoint.Apply((c, q1)); + X__.Controlled.Adjoint.Apply((c, q1)); #line hidden return QVoid.Instance; } @@ -2465,7 +2465,7 @@ namespace N1 public override void __Init__() { - this.X = this.__Factory__.Get>(typeof(global::Microsoft.Quantum.Intrinsic.X)); + this.X__ = this.__Factory__.Get>(typeof(global::Microsoft.Quantum.Intrinsic.X)); } public override IApplyData __DataIn__(Qubit data) => data; @@ -2671,16 +2671,16 @@ internal partial class EmptyInternalOperation : Operation, ICallab [] let ``duplicatedDefinitionsCaller body`` () = [ - "emptyFunction.Apply(QVoid.Instance);" + "emptyFunction__.Apply(QVoid.Instance);" "Microsoft__Quantum__Overrides__emptyFunction.Apply(QVoid.Instance);" """ { - var qubits = Allocate.Apply(1L); + var qubits = Allocate__.Apply(1L); #line hidden bool __arg1__ = true; try { - H.Apply(qubits[0L]); + H__.Apply(qubits[0L]); Microsoft__Quantum__Intrinsic__H.Apply(qubits[0L]); } #line hidden @@ -2694,7 +2694,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab { if (__arg1__) { - Release.Apply(qubits); + Release__.Apply(qubits); } } }""" @@ -2709,12 +2709,12 @@ internal partial class EmptyInternalOperation : Operation, ICallab let expected = [ - template "Allocate" "Allocate" + template "Allocate" "Allocate__" template "IUnitary" "Microsoft__Quantum__Intrinsic__H" - template "ICallable" "H" - template "Release" "Release" + template "ICallable" "H__" + template "Release" "Release__" template "ICallable" "Microsoft__Quantum__Overrides__emptyFunction" - template "ICallable" "emptyFunction" + template "ICallable" "emptyFunction__" ] let (_,op) = duplicatedDefinitionsCaller @@ -2730,7 +2730,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab [] let ``buildOpsProperties - internal callables`` () = - let property = sprintf "private protected %s %s { get; set; }" + let property = sprintf "private protected %s %s__ { get; set; }" let expected = [ property "ICallable" "EmptyInternalFunction" @@ -3489,19 +3489,19 @@ namespace Microsoft.Quantum.Tests.LineNumbers String ICallable.Name => "TestLineInBlocks"; String ICallable.FullName => "Microsoft.Quantum.Tests.LineNumbers.TestLineInBlocks"; - protected Allocate Allocate + protected Allocate Allocate__ { get; set; } - protected Release Release + protected Release Release__ { get; set; } - protected IUnitary X + protected IUnitary X__ { get; set; @@ -3515,7 +3515,7 @@ namespace Microsoft.Quantum.Tests.LineNumbers #line hidden { #line 13 "%%" - var (ctrls,q) = (Allocate.Apply(r), Allocate.Apply()); + var (ctrls,q) = (Allocate__.Apply(r), Allocate__.Apply()); #line hidden bool __arg1__ = true; try @@ -3524,7 +3524,7 @@ namespace Microsoft.Quantum.Tests.LineNumbers if ((n == 0L)) { #line 16 "%%" - X.Apply(q); + X__.Apply(q); } else { @@ -3533,7 +3533,7 @@ namespace Microsoft.Quantum.Tests.LineNumbers #line hidden { #line 21 "%%" - X.Controlled.Apply((new QArray(c), q)); + X__.Controlled.Apply((new QArray(c), q)); } } } @@ -3549,9 +3549,9 @@ namespace Microsoft.Quantum.Tests.LineNumbers if (__arg1__) { #line hidden - Release.Apply(ctrls); + Release__.Apply(ctrls); #line hidden - Release.Apply(q); + Release__.Apply(q); } } } @@ -3563,9 +3563,9 @@ namespace Microsoft.Quantum.Tests.LineNumbers ; public override void __Init__() { - this.Allocate = this.__Factory__.Get(typeof(global::Microsoft.Quantum.Intrinsic.Allocate)); - this.Release = this.__Factory__.Get(typeof(global::Microsoft.Quantum.Intrinsic.Release)); - this.X = this.__Factory__.Get>(typeof(global::Microsoft.Quantum.Intrinsic.X)); + this.Allocate__ = this.__Factory__.Get(typeof(global::Microsoft.Quantum.Intrinsic.Allocate)); + this.Release__ = this.__Factory__.Get(typeof(global::Microsoft.Quantum.Intrinsic.Release)); + this.X__ = this.__Factory__.Get>(typeof(global::Microsoft.Quantum.Intrinsic.X)); } public override IApplyData __DataIn__(Int64 data) => new QTuple(data); From 11189c813c4301afd0db4ca5ac3fefb10cfb9e3a Mon Sep 17 00:00:00 2001 From: Sarah Marshall Date: Wed, 19 Aug 2020 13:04:53 -0700 Subject: [PATCH 14/17] Add tests for #247 --- .../Simulators.Tests/Circuits/MemberNames.qs | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/Simulation/Simulators.Tests/Circuits/MemberNames.qs b/src/Simulation/Simulators.Tests/Circuits/MemberNames.qs index e76c78d8e61..cf7f7948e98 100644 --- a/src/Simulation/Simulators.Tests/Circuits/MemberNames.qs +++ b/src/Simulation/Simulators.Tests/Circuits/MemberNames.qs @@ -1,5 +1,6 @@ namespace Microsoft.Quantum.Simulation.Simulators.Tests.Circuits.MemberNames { open Microsoft.Quantum.Diagnostics; + open Microsoft.Quantum.Intrinsic; open Microsoft.Quantum.Simulation.Simulators.Tests.Circuits; newtype Foo = (Foo : Int); @@ -53,6 +54,30 @@ // let bar = Bar(10); // AssertEqual(10, bar::Data); } + + @Test("QuantumSimulator") + operation AvoidsOperationPropertyShadowing1() : Unit { + using (q = Qubit()) { + let MicrosoftQuantumIntrinsicX = Z; + X(q); + AssertEqual(One, M(q)); + } + } +} + +namespace Microsoft.Quantum.Simulation.Simulators.Tests.Circuits.MemberNames2 { + open Microsoft.Quantum.Diagnostics; + open Microsoft.Quantum.Intrinsic as Intrinsic; + open Microsoft.Quantum.Simulation.Simulators.Tests.Circuits; + + @Test("QuantumSimulator") + operation AvoidsOperationPropertyShadowing2() : Unit { + using (q = Qubit()) { + let X = Intrinsic.Z; + Intrinsic.X(q); + AssertEqual(One, Intrinsic.M(q)); + } + } } namespace FooBar { From 8bb78dd2ab0e83d1688a1118f1149bf5cdb45c95 Mon Sep 17 00:00:00 2001 From: Sarah Marshall Date: Fri, 21 Aug 2020 18:42:57 -0700 Subject: [PATCH 15/17] Update remaining specialization names --- .../QCTraceSimulator.ClassicalControl.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.ClassicalControl.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.ClassicalControl.cs index b0f5acc9ebe..c00427bac1d 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.ClassicalControl.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.ClassicalControl.cs @@ -145,7 +145,7 @@ public TracerApplyIfElseA(QCTraceSimulatorImpl m) : base(m) return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Body, null); }; - public override Func<(Result, IAdjointable, IAdjointable), QVoid> AdjointBody => (q) => + public override Func<(Result, IAdjointable, IAdjointable), QVoid> __AdjointBody__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Adjoint, null); @@ -167,7 +167,7 @@ public TracerApplyIfElseC(QCTraceSimulatorImpl m) : base(m) return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Body, null); }; - public override Func<(IQArray, (Result, IControllable, IControllable)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (Result, IControllable, IControllable)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (Result measurementResult, ICallable onZero, ICallable onOne)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.Controlled, ctrls); @@ -246,7 +246,7 @@ public TracerApplyConditionallyA(QCTraceSimulatorImpl m) : base(m) return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); }; - public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> AdjointBody => (q) => + public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> __AdjointBody__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Adjoint, null); @@ -268,7 +268,7 @@ public TracerApplyConditionallyC(QCTraceSimulatorImpl m) : base(m) return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); }; - public override Func<(IQArray, (IQArray, IQArray, IControllable, IControllable)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (IQArray, IQArray, IControllable, IControllable)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.Controlled, ctrls); @@ -291,20 +291,20 @@ public TracerApplyConditionallyCA(QCTraceSimulatorImpl m) : base(m) return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); }; - public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> AdjointBody => (q) => + public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> __AdjointBody__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Adjoint, null); }; - public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.Controlled, ctrls); return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, type, ctrls); }; - public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> ControlledAdjointBody => (q) => + public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> __ControlledAdjointBody__ => (q) => { (IQArray ctrls, (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.ControlledAdjoint, ctrls); From de8225d155f845663392b7e261b7193792e70b2b Mon Sep 17 00:00:00 2001 From: Sarah Marshall Date: Mon, 24 Aug 2020 13:07:32 -0700 Subject: [PATCH 16/17] Add Deconstruct to reserved words --- src/Simulation/CsharpGeneration/SimulationCode.fs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Simulation/CsharpGeneration/SimulationCode.fs b/src/Simulation/CsharpGeneration/SimulationCode.fs index 94201297d7d..de4e41dd1ad 100644 --- a/src/Simulation/CsharpGeneration/SimulationCode.fs +++ b/src/Simulation/CsharpGeneration/SimulationCode.fs @@ -56,6 +56,7 @@ module SimulationCode = let isReserved = match name with | "Data" + | "Deconstruct" | "Info" | "Run" -> true | _ -> @@ -1511,7 +1512,7 @@ module SimulationCode = match qsharpType.Resolution with | QsTypeKind.TupleType many -> many |> Seq.mapi buildOneParameter |> List.ofSeq | _ -> [] - ``method`` "void" "__Deconstruct__" ``<<`` [] ``>>`` + ``method`` "void" "Deconstruct" ``<<`` [] ``>>`` ``(`` parameters ``)`` [ ``public`` ] ``{`` body ``}`` From d10fda5ec25497a3a1fca811a00f0153165dd217 Mon Sep 17 00:00:00 2001 From: Sarah Marshall Date: Mon, 24 Aug 2020 13:42:24 -0700 Subject: [PATCH 17/17] Update tests --- .../SimulationCodeTests.fs | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs b/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs index 772e09686a9..b20864f09ee 100644 --- a/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs +++ b/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs @@ -2940,7 +2940,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab } } - public void __Deconstruct__() + public void Deconstruct() { } } @@ -2966,7 +2966,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab } } - public void __Deconstruct__() + public void Deconstruct() { } } @@ -2992,7 +2992,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab } } - public void __Deconstruct__() + public void Deconstruct() { } } @@ -3018,7 +3018,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab } } - public void __Deconstruct__() + public void Deconstruct() { } } @@ -3044,7 +3044,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab } } - public void __Deconstruct__() + public void Deconstruct() { } } @@ -3072,7 +3072,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab } } - public void __Deconstruct__(out Int64 item1, out IQArray item2) + public void Deconstruct(out Int64 item1, out IQArray item2) { item1 = Data.Item1; item2 = Data.Item2; @@ -3094,7 +3094,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void __Deconstruct__() + public void Deconstruct() { } } @@ -3115,7 +3115,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab public udt_Real Item1 => Data.Item1; public udt_Real Item2 => Data.Item2; System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void __Deconstruct__(out udt_Real item1, out udt_Real item2) + public void Deconstruct(out udt_Real item1, out udt_Real item2) { item1 = Data.Item1; item2 = Data.Item2; @@ -3137,7 +3137,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void __Deconstruct__() + public void Deconstruct() { } } @@ -3159,7 +3159,7 @@ internal class InternalType : UDTBase, IApplyData System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void __Deconstruct__() + public void Deconstruct() { } } @@ -3184,7 +3184,7 @@ public class NamedTuple : UDTBase<((Int64,Double),Int64)>, IApplyData public (Int64,Double) Item1 => Data.Item1; public Int64 Item2 => Data.Item2; System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void __Deconstruct__(out (Int64,Double) item1, out Int64 item2) + public void Deconstruct(out (Int64,Double) item1, out Int64 item2) { item1 = Data.Item1; item2 = Data.Item2; @@ -3242,7 +3242,7 @@ namespace Microsoft.Quantum public Int64 Item1 => Data.Item1; public Int64 Item2 => Data.Item2; System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void __Deconstruct__(out Int64 item1, out Int64 item2) + public void Deconstruct(out Int64 item1, out Int64 item2) { item1 = Data.Item1; item2 = Data.Item2; @@ -3262,7 +3262,7 @@ namespace Microsoft.Quantum public Int64 Item1 => Data.Item1; public Int64 Item2 => Data.Item2; System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void __Deconstruct__(out Int64 item1, out Int64 item2) + public void Deconstruct(out Int64 item1, out Int64 item2) { item1 = Data.Item1; item2 = Data.Item2; @@ -3352,7 +3352,7 @@ namespace Microsoft.Quantum public Int64 Item2 => Data.Item2; System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void __Deconstruct__(out Int64 item1, out Int64 item2) + public void Deconstruct(out Int64 item1, out Int64 item2) { item1 = Data.Item1; item2 = Data.Item2; @@ -3376,7 +3376,7 @@ namespace Microsoft.Quantum public ((Boolean, String), Int64) Item2 => Data.Item2; System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void __Deconstruct__(out Double item1, out ((Boolean, String), Int64) item2) + public void Deconstruct(out Double item1, out ((Boolean, String), Int64) item2) { item1 = Data.Item1; item2 = Data.Item2; @@ -3625,7 +3625,7 @@ namespace Microsoft.Quantum.Core } System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void __Deconstruct__() + public void Deconstruct() { } } @@ -3645,7 +3645,7 @@ namespace Microsoft.Quantum.Diagnostics } System.Collections.Generic.IEnumerable IApplyData.Qubits => null; - public void __Deconstruct__() + public void Deconstruct() { } }