Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FStar does not compile on arm64, arm32 and ppc64 #2332

Closed
kit-ty-kate opened this issue Jul 7, 2021 · 6 comments · Fixed by #3631
Closed

FStar does not compile on arm64, arm32 and ppc64 #2332

kit-ty-kate opened this issue Jul 7, 2021 · 6 comments · Fixed by #3631

Comments

@kit-ty-kate
Copy link
Contributor

arm64 and ppc64:

#=== ERROR while compiling fstar.2021.06.06 ===================================#
# context              2.1.0 | linux/arm64 | ocaml-base-compiler.4.12.0 | pinned(https://github.com/FStarLang/FStar/archive/refs/tags/v2021.06.06.tar.gz)
# path                 ~/.opam/4.12/.opam-switch/build/fstar.2021.06.06
# command              ~/.opam/opam-init/hooks/sandbox.sh build make PREFIX=/home/opam/.opam/4.12 -j 31
# exit-code            2
# env-file             ~/.opam/log/fstar-12886-0599bd.env
# output-file          ~/.opam/log/fstar-12886-0599bd.out
### output ###
[...]
# ocamlfind ocamlopt -shared -linkall -thread -package batteries -package zarith -package ppx_deriving.std -package ppx_deriving_yojson -I ulib/tactics_ml ulib/tactics_ml/fstartaclib.cmxa -o ulib/tactics_ml/fstartaclib.cmxs
# [INSTALL   fstartaclib]
# make[3]: Leaving directory '/home/opam/.opam/4.12/.opam-switch/build/fstar.2021.06.06/ulib'
# make[2]: Leaving directory '/home/opam/.opam/4.12/.opam-switch/build/fstar.2021.06.06/ulib'
# make[1]: Leaving directory '/home/opam/.opam/4.12/.opam-switch/build/fstar.2021.06.06/ulib/ml'
# make[1]: Entering directory '/home/opam/.opam/4.12/.opam-switch/build/fstar.2021.06.06/ulib'
# make FSTAR_HOME=.. -f Makefile.verify verify-core
# make[2]: Entering directory '/home/opam/.opam/4.12/.opam-switch/build/fstar.2021.06.06/ulib'
# ../bin/fstar.exe --warn_error @271   --use_hints --cache_dir .cache --hint_dir .cache --cache_checked_modules --odir _output --dep full  FStar.Pervasives.fst FStar.HyperStack.ST.fst FStar.Seq.Base.fst FStar.Int.Cast.fst FStar.Calc.fst FStar.List.Pure.Base.fst FStar.Reflection.Derived.fst FStar.PredicateExtensionality.fst FStar.Option.fst FStar.Math.Lib.fst FStar.Int32.fst FStar.Tactics.Print.fst FStar.List.Tot.fst FStar.Universe.fst FStar.BV.fst FStar.Math.Euclid.fst FStar.Int64.fst FStar.UInt8.fst FStar.Algebra.CommMonoid.fst FStar.SquashProperties.fst FStar.UInt32.fst FStar.Monotonic.DependentMap.fst FStar.IndefiniteDescription.fst FStar.Monotonic.Map.fst FStar.TSet.fst FStar.Util.fst FStar.UInt64.fst FStar.Heap.fst FStar.All.fst FStar.Squash.fst FStar.Modifies.fst FStar.Tactics.CanonCommMonoidSimple.fst FStar.ST.fst FStar.List.Tot.Properties.fst FStar.Reflection.Const.fst FStar.PropositionalExtensionality.fst FStar.BitVector.fst FStar.HyperStack.All.fst FStar.FunctionalExtensionality.fst FStar.Tactics.Canon.fst FStar.Seq.fst FStar.Seq.Sorted.fst FStar.Reflection.fst FStar.Math.Lemmas.fst FStar.Pervasives.Native.fst FStar.Int16.fst FStar.BigOps.fst FStar.MarkovsPrinciple.fst FStar.Tactics.Util.fst FStar.Reflection.Arith.fst FStar.IO.fst FStar.Map.fst FStar.Monotonic.Witnessed.fst FStar.Classical.fst FStar.Endianness.fst FStar.Tactics.Simplifier.fst FStar.List.Tot.Base.fst FStar.Int.Cast.Full.fst FStar.GSet.fst FStar.Algebra.CommMonoid.Equiv.fst FStar.Integers.fst FStar.Tactics.SyntaxHelpers.fst FStar.LexicographicOrdering.fst FStar.Int.fst FStar.ModifiesGen.fst FStar.Monotonic.Seq.fst FStar.WellFounded.fst FStar.OrdSetProps.fst FStar.Algebra.Monoid.fst FStar.UInt.fst FStar.IFC.fst FStar.Vector.fst FStar.UInt16.fst FStar.Reflection.Formula.fst FStar.Tactics.Arith.fst FStar.Exn.fst FStar.Vector.Properties.fst FStar.HyperStack.fst FStar.List.Pure.fst FStar.Tactics.Effect.fst FStar.Reflection.Derived.Lemmas.fst FStar.Vector.Base.fst FStar.MRef.fst FStar.PCM.fst FStar.Monotonic.HyperHeap.fst FStar.Ghost.fst FStar.Tactics.CanonCommMonoid.fst FStar.Tactics.CanonMonoid.fst FStar.Tactics.Typeclasses.fst FStar.Set.fst FStar.DependentMap.fst FStar.Mul.fst FStar.Preorder.fst FStar.Tactics.PatternMatching.fst FStar.Tactics.CanonCommMonoidSimple.Equiv.fst FStar.List.Pure.Properties.fst FStar.Ref.fst FStar.Int128.fst FStar.Tactics.CanonCommSemiring.fst FStar.Tactics.fst FStar.Tactics.Logic.fst FStar.Tactics.CanonCommSwaps.fst FStar.Fin.fst FStar.Monotonic.Heap.fst FStar.Monotonic.HyperStack.fst FStar.Monotonic.Pure.fst FStar.Tactics.BV.fst FStar.List.fst FStar.Printf.fst FStar.ReflexiveTransitiveClosure.fst FStar.Int8.fst FStar.Order.fst FStar.StrongExcludedMiddle.fst FStar.Seq.Properties.fst FStar.Math.Fermat.fst FStar.UInt128.fst FStar.Tactics.Derived.fst FStar.Monotonic.HyperHeap.fsti FStar.GSet.fsti FStar.LexicographicOrdering.fsti FStar.Int8.fsti FStar.Pervasives.fsti FStar.Int.fsti FStar.ModifiesGen.fsti FStar.Tactics.Types.fsti FStar.UInt64.fsti FStar.Char.fsti FStar.Real.fsti FStar.Set.fsti FStar.Tactics.Effect.fsti FStar.MRef.fsti FStar.Ghost.fsti FStar.Reflection.Data.fsti FStar.UInt.fsti FStar.Universe.fsti FStar.Int64.fsti FStar.BaseTypes.fsti FStar.Reflection.Types.fsti FStar.Tactics.Common.fsti FStar.Int128.fsti FStar.TSet.fsti FStar.Seq.Base.fsti FStar.Modifies.fsti FStar.Monotonic.Witnessed.fsti FStar.IFC.fsti FStar.Float.fsti FStar.BV.fsti FStar.Udp.fsti FStar.Monotonic.Heap.fsti FStar.Vector.Base.fsti FStar.HyperStack.ST.fsti FStar.String.fsti FStar.ReflexiveTransitiveClosure.fsti FStar.Int32.fsti FStar.Monotonic.DependentMap.fsti FStar.Tactics.Builtins.fsti FStar.Tcp.fsti FStar.Math.Euclid.fsti FStar.Squash.fsti FStar.Range.fsti FStar.Reflection.Builtins.fsti FStar.Tactics.Result.fsti FStar.UInt128.fsti FStar.Dyn.fsti FStar.UInt16.fsti FStar.Seq.Properties.fsti FStar.VConfig.fsti FStar.Math.Fermat.fsti FStar.FunctionalExtensionality.fsti FStar.UInt8.fsti FStar.Int16.fsti FStar.BigOps.fsti FStar.DependentMap.fsti FStar.UInt32.fsti FStar.Map.fsti FStar.Date.fsti FStar.Classical.fsti FStar.Monotonic.HyperStack.fsti FStar.Endianness.fsti FStar.Bytes.fsti LowStar.Regional.Instances.fst LowStar.ConstBuffer.fst LowStar.Vector.fst LowStar.BufferOps.fst LowStar.PrefixFreezableBuffer.fst LowStar.Modifies.fst LowStar.Comment.fst LowStar.BufferView.Down.fst LowStar.RVector.fst LowStar.Regional.fst LowStar.BufferView.fst LowStar.Printf.fst LowStar.ImmutableBuffer.fst LowStar.Buffer.fst LowStar.UninitializedBuffer.fst LowStar.Monotonic.Buffer.fst LowStar.ModifiesPat.fst LowStar.Endianness.fst LowStar.BufferView.Up.fst LowStar.BufferView.fsti LowStar.Monotonic.Buffer.fsti LowStar.Literal.fsti LowStar.BufferView.Up.fsti LowStar.Comment.fsti LowStar.Failure.fsti LowStar.ConstBuffer.fsti LowStar.BufferView.Down.fsti LowStar.PrefixFreezableBuffer.fsti legacy/FStar.Error.fst legacy/FStar.Buffer.Quantifiers.fst legacy/FStar.HyperStack.IO.fst legacy/FStar.Pointer.Base.fst legacy/FStar.Buffer.fst legacy/FStar.ErasedLogic.fst legacy/FStar.Pointer.Derived1.fst legacy/FStar.Pointer.fst legacy/FStar.Relational.Relational.fst legacy/FStar.Axiomatic.Array.fst legacy/FStar.Relational.Comp.fst legacy/LowStar.ToFStarBuffer.fst legacy/FStar.Array.fst legacy/FStar.TwoLevelHeap.fst legacy/FStar.Pointer.Derived3.fst legacy/LowStar.BufferCompat.fst legacy/FStar.BufferNG.fst legacy/FStar.Constructive.fst legacy/FStar.Pointer.Derived2.fst legacy/FStar.Crypto.fst legacy/FStar.TaggedUnion.fst legacy/FStar.Matrix2.fsti legacy/FStar.Pointer.Base.fsti legacy/FStar.TaggedUnion.fsti legacy/FStar.Pointer.Derived1.fsti legacy/FStar.Array.fsti legacy/FStar.Pointer.Derived3.fsti legacy/FStar.Pointer.Derived2.fsti experimental/Steel.SelArray.fst experimental/Steel.Channel.Protocol.fst experimental/Steel.FramingTestSuite.fst experimental/FStar.OrdMap.fst experimental/FStar.NMSTTotal.fst experimental/Steel.Effect.Atomic.fst experimental/FStar.InteractiveHelpers.Base.fst experimental/FStar.InteractiveHelpers.PostProcess.fst experimental/Steel.SpinLock.fst experimental/Steel.Primitive.ForkJoin.fst experimental/FStar.InteractiveHelpers.ExploreTerm.fst experimental/Steel.Effect.fst experimental/Steel.Memory.fst experimental/Steel.Reference.fst experimental/FStar.MSTTotal.fst experimental/Steel.Heap.fst experimental/Steel.Utils.fst experimental/FStar.OrdSet.fst experimental/Steel.Effect.M.fst experimental/Steel.MonotonicCounter.fst experimental/Steel.DisposableInvariant.fst experimental/Steel.Preorder.fst experimental/FStar.InteractiveHelpers.fst experimental/Steel.HigherReference.fst experimental/FStar.ConstantTime.Integers.fst experimental/Steel.SelEffect.fst experimental/FStar.MST.fst experimental/FStar.InteractiveHelpers.Output.fst experimental/Steel.Stepper.fst experimental/Steel.Effect.Common.fst experimental/FStar.NMST.fst experimental/Steel.Memory.Tactics.fst experimental/Steel.Primitive.ForkJoin.Unix.fst experimental/Steel.MonotonicHigherReference.fst experimental/Steel.SelEffect.Atomic.fst experimental/FStar.InteractiveHelpers.Effectful.fst experimental/Steel.Semantics.Hoare.MST.fst experimental/FStar.OrdMapProps.fst experimental/FStar.InteractiveHelpers.Propositions.fst experimental/Steel.FractionalPermission.fst experimental/Steel.SelEffect.Common.fst experimental/Steel.Semantics.Instantiate.fst experimental/Steel.Channel.Simplex.fst experimental/Steel.Closure.fst experimental/Steel.DisposableInvariant.fsti experimental/Steel.Channel.Simplex.fsti experimental/Steel.Closure.fsti experimental/Steel.Channel.Duplex.fsti experimental/FStar.OrdMap.fsti experimental/Steel.SelArray.fsti experimental/Steel.Effect.Atomic.fsti experimental/Steel.SelEffect.Atomic.fsti experimental/Steel.HigherReference.fsti experimental/Steel.SpinLock.fsti experimental/Steel.Primitive.ForkJoin.fsti experimental/Steel.Semantics.Instantiate.fsti experimental/Steel.Heap.fsti experimental/FStar.OrdSet.fsti experimental/Steel.LockCoupling.fsti experimental/Steel.Reference.fsti experimental/FStar.ConstantTime.Integers.fsti experimental/Steel.Memory.fsti experimental/Steel.Array.fsti experimental/Steel.SelEffect.Common.fsti experimental/Steel.Effect.Common.fsti experimental/Steel.Effect.fsti experimental/Steel.MonotonicHigherReference.fsti experimental/Steel.SelEffect.fsti > .depend
# [CHECK     prims.fst]
# Unexpected error; please file a bug report, ideally with a minimized version of the source program that triggered the error.
# (Failure "Empty option")
# make[2]: *** [Makefile.verify:51: .cache/prims.fst.checked] Error 1
# make[2]: Leaving directory '/home/opam/.opam/4.12/.opam-switch/build/fstar.2021.06.06/ulib'
# make[1]: *** [Makefile:10: all] Error 2
# make[1]: Leaving directory '/home/opam/.opam/4.12/.opam-switch/build/fstar.2021.06.06/ulib'
# make: *** [Makefile:8: all] Error 2

arm32:

#=== ERROR while compiling fstar.2021.06.06 ===================================#
# context              2.1.0 | linux/arm32 | ocaml-base-compiler.4.12.0 | pinned(https://github.com/FStarLang/FStar/archive/refs/tags/v2021.06.06.tar.gz)
# path                 ~/.opam/4.12/.opam-switch/build/fstar.2021.06.06
# command              ~/.opam/opam-init/hooks/sandbox.sh build make PREFIX=/home/opam/.opam/4.12 -j 31
# exit-code            2
# env-file             ~/.opam/log/fstar-12868-39936a.env
# output-file          ~/.opam/log/fstar-12868-39936a.out
### output ###
[...]
# ocamlfind ocamlopt -shared -linkall -thread -package batteries -package zarith -package ppx_deriving.std -package ppx_deriving_yojson -I ulib/tactics_ml ulib/tactics_ml/fstartaclib.cmxa -o ulib/tactics_ml/fstartaclib.cmxs
# [INSTALL   fstartaclib]
# make[3]: Leaving directory '/home/opam/.opam/4.12/.opam-switch/build/fstar.2021.06.06/ulib'
# make[2]: Leaving directory '/home/opam/.opam/4.12/.opam-switch/build/fstar.2021.06.06/ulib'
# make[1]: Leaving directory '/home/opam/.opam/4.12/.opam-switch/build/fstar.2021.06.06/ulib/ml'
# make[1]: Entering directory '/home/opam/.opam/4.12/.opam-switch/build/fstar.2021.06.06/ulib'
# make FSTAR_HOME=.. -f Makefile.verify verify-core
# make[2]: Entering directory '/home/opam/.opam/4.12/.opam-switch/build/fstar.2021.06.06/ulib'
# ../bin/fstar.exe --warn_error @271   --use_hints --cache_dir .cache --hint_dir .cache --cache_checked_modules --odir _output --dep full  FStar.Pervasives.fst FStar.HyperStack.ST.fst FStar.Seq.Base.fst FStar.Int.Cast.fst FStar.Calc.fst FStar.List.Pure.Base.fst FStar.Reflection.Derived.fst FStar.PredicateExtensionality.fst FStar.Option.fst FStar.Math.Lib.fst FStar.Int32.fst FStar.Tactics.Print.fst FStar.List.Tot.fst FStar.Universe.fst FStar.BV.fst FStar.Math.Euclid.fst FStar.Int64.fst FStar.UInt8.fst FStar.Algebra.CommMonoid.fst FStar.SquashProperties.fst FStar.UInt32.fst FStar.Monotonic.DependentMap.fst FStar.IndefiniteDescription.fst FStar.Monotonic.Map.fst FStar.TSet.fst FStar.Util.fst FStar.UInt64.fst FStar.Heap.fst FStar.All.fst FStar.Squash.fst FStar.Modifies.fst FStar.Tactics.CanonCommMonoidSimple.fst FStar.ST.fst FStar.List.Tot.Properties.fst FStar.Reflection.Const.fst FStar.PropositionalExtensionality.fst FStar.BitVector.fst FStar.HyperStack.All.fst FStar.FunctionalExtensionality.fst FStar.Tactics.Canon.fst FStar.Seq.fst FStar.Seq.Sorted.fst FStar.Reflection.fst FStar.Math.Lemmas.fst FStar.Pervasives.Native.fst FStar.Int16.fst FStar.BigOps.fst FStar.MarkovsPrinciple.fst FStar.Tactics.Util.fst FStar.Reflection.Arith.fst FStar.IO.fst FStar.Map.fst FStar.Monotonic.Witnessed.fst FStar.Classical.fst FStar.Endianness.fst FStar.Tactics.Simplifier.fst FStar.List.Tot.Base.fst FStar.Int.Cast.Full.fst FStar.GSet.fst FStar.Algebra.CommMonoid.Equiv.fst FStar.Integers.fst FStar.Tactics.SyntaxHelpers.fst FStar.LexicographicOrdering.fst FStar.Int.fst FStar.ModifiesGen.fst FStar.Monotonic.Seq.fst FStar.WellFounded.fst FStar.OrdSetProps.fst FStar.Algebra.Monoid.fst FStar.UInt.fst FStar.IFC.fst FStar.Vector.fst FStar.UInt16.fst FStar.Reflection.Formula.fst FStar.Tactics.Arith.fst FStar.Exn.fst FStar.Vector.Properties.fst FStar.HyperStack.fst FStar.List.Pure.fst FStar.Tactics.Effect.fst FStar.Reflection.Derived.Lemmas.fst FStar.Vector.Base.fst FStar.MRef.fst FStar.PCM.fst FStar.Monotonic.HyperHeap.fst FStar.Ghost.fst FStar.Tactics.CanonCommMonoid.fst FStar.Tactics.CanonMonoid.fst FStar.Tactics.Typeclasses.fst FStar.Set.fst FStar.DependentMap.fst FStar.Mul.fst FStar.Preorder.fst FStar.Tactics.PatternMatching.fst FStar.Tactics.CanonCommMonoidSimple.Equiv.fst FStar.List.Pure.Properties.fst FStar.Ref.fst FStar.Int128.fst FStar.Tactics.CanonCommSemiring.fst FStar.Tactics.fst FStar.Tactics.Logic.fst FStar.Tactics.CanonCommSwaps.fst FStar.Fin.fst FStar.Monotonic.Heap.fst FStar.Monotonic.HyperStack.fst FStar.Monotonic.Pure.fst FStar.Tactics.BV.fst FStar.List.fst FStar.Printf.fst FStar.ReflexiveTransitiveClosure.fst FStar.Int8.fst FStar.Order.fst FStar.StrongExcludedMiddle.fst FStar.Seq.Properties.fst FStar.Math.Fermat.fst FStar.UInt128.fst FStar.Tactics.Derived.fst FStar.Monotonic.HyperHeap.fsti FStar.GSet.fsti FStar.LexicographicOrdering.fsti FStar.Int8.fsti FStar.Pervasives.fsti FStar.Int.fsti FStar.ModifiesGen.fsti FStar.Tactics.Types.fsti FStar.UInt64.fsti FStar.Char.fsti FStar.Real.fsti FStar.Set.fsti FStar.Tactics.Effect.fsti FStar.MRef.fsti FStar.Ghost.fsti FStar.Reflection.Data.fsti FStar.UInt.fsti FStar.Universe.fsti FStar.Int64.fsti FStar.BaseTypes.fsti FStar.Reflection.Types.fsti FStar.Tactics.Common.fsti FStar.Int128.fsti FStar.TSet.fsti FStar.Seq.Base.fsti FStar.Modifies.fsti FStar.Monotonic.Witnessed.fsti FStar.IFC.fsti FStar.Float.fsti FStar.BV.fsti FStar.Udp.fsti FStar.Monotonic.Heap.fsti FStar.Vector.Base.fsti FStar.HyperStack.ST.fsti FStar.String.fsti FStar.ReflexiveTransitiveClosure.fsti FStar.Int32.fsti FStar.Monotonic.DependentMap.fsti FStar.Tactics.Builtins.fsti FStar.Tcp.fsti FStar.Math.Euclid.fsti FStar.Squash.fsti FStar.Range.fsti FStar.Reflection.Builtins.fsti FStar.Tactics.Result.fsti FStar.UInt128.fsti FStar.Dyn.fsti FStar.UInt16.fsti FStar.Seq.Properties.fsti FStar.VConfig.fsti FStar.Math.Fermat.fsti FStar.FunctionalExtensionality.fsti FStar.UInt8.fsti FStar.Int16.fsti FStar.BigOps.fsti FStar.DependentMap.fsti FStar.UInt32.fsti FStar.Map.fsti FStar.Date.fsti FStar.Classical.fsti FStar.Monotonic.HyperStack.fsti FStar.Endianness.fsti FStar.Bytes.fsti LowStar.Regional.Instances.fst LowStar.ConstBuffer.fst LowStar.Vector.fst LowStar.BufferOps.fst LowStar.PrefixFreezableBuffer.fst LowStar.Modifies.fst LowStar.Comment.fst LowStar.BufferView.Down.fst LowStar.RVector.fst LowStar.Regional.fst LowStar.BufferView.fst LowStar.Printf.fst LowStar.ImmutableBuffer.fst LowStar.Buffer.fst LowStar.UninitializedBuffer.fst LowStar.Monotonic.Buffer.fst LowStar.ModifiesPat.fst LowStar.Endianness.fst LowStar.BufferView.Up.fst LowStar.BufferView.fsti LowStar.Monotonic.Buffer.fsti LowStar.Literal.fsti LowStar.BufferView.Up.fsti LowStar.Comment.fsti LowStar.Failure.fsti LowStar.ConstBuffer.fsti LowStar.BufferView.Down.fsti LowStar.PrefixFreezableBuffer.fsti legacy/FStar.Error.fst legacy/FStar.Buffer.Quantifiers.fst legacy/FStar.HyperStack.IO.fst legacy/FStar.Pointer.Base.fst legacy/FStar.Buffer.fst legacy/FStar.ErasedLogic.fst legacy/FStar.Pointer.Derived1.fst legacy/FStar.Pointer.fst legacy/FStar.Relational.Relational.fst legacy/FStar.Axiomatic.Array.fst legacy/FStar.Relational.Comp.fst legacy/LowStar.ToFStarBuffer.fst legacy/FStar.Array.fst legacy/FStar.TwoLevelHeap.fst legacy/FStar.Pointer.Derived3.fst legacy/LowStar.BufferCompat.fst legacy/FStar.BufferNG.fst legacy/FStar.Constructive.fst legacy/FStar.Pointer.Derived2.fst legacy/FStar.Crypto.fst legacy/FStar.TaggedUnion.fst legacy/FStar.Matrix2.fsti legacy/FStar.Pointer.Base.fsti legacy/FStar.TaggedUnion.fsti legacy/FStar.Pointer.Derived1.fsti legacy/FStar.Array.fsti legacy/FStar.Pointer.Derived3.fsti legacy/FStar.Pointer.Derived2.fsti experimental/Steel.SelArray.fst experimental/Steel.Channel.Protocol.fst experimental/Steel.FramingTestSuite.fst experimental/FStar.OrdMap.fst experimental/FStar.NMSTTotal.fst experimental/Steel.Effect.Atomic.fst experimental/FStar.InteractiveHelpers.Base.fst experimental/FStar.InteractiveHelpers.PostProcess.fst experimental/Steel.SpinLock.fst experimental/Steel.Primitive.ForkJoin.fst experimental/FStar.InteractiveHelpers.ExploreTerm.fst experimental/Steel.Effect.fst experimental/Steel.Memory.fst experimental/Steel.Reference.fst experimental/FStar.MSTTotal.fst experimental/Steel.Heap.fst experimental/Steel.Utils.fst experimental/FStar.OrdSet.fst experimental/Steel.Effect.M.fst experimental/Steel.MonotonicCounter.fst experimental/Steel.DisposableInvariant.fst experimental/Steel.Preorder.fst experimental/FStar.InteractiveHelpers.fst experimental/Steel.HigherReference.fst experimental/FStar.ConstantTime.Integers.fst experimental/Steel.SelEffect.fst experimental/FStar.MST.fst experimental/FStar.InteractiveHelpers.Output.fst experimental/Steel.Stepper.fst experimental/Steel.Effect.Common.fst experimental/FStar.NMST.fst experimental/Steel.Memory.Tactics.fst experimental/Steel.Primitive.ForkJoin.Unix.fst experimental/Steel.MonotonicHigherReference.fst experimental/Steel.SelEffect.Atomic.fst experimental/FStar.InteractiveHelpers.Effectful.fst experimental/Steel.Semantics.Hoare.MST.fst experimental/FStar.OrdMapProps.fst experimental/FStar.InteractiveHelpers.Propositions.fst experimental/Steel.FractionalPermission.fst experimental/Steel.SelEffect.Common.fst experimental/Steel.Semantics.Instantiate.fst experimental/Steel.Channel.Simplex.fst experimental/Steel.Closure.fst experimental/Steel.DisposableInvariant.fsti experimental/Steel.Channel.Simplex.fsti experimental/Steel.Closure.fsti experimental/Steel.Channel.Duplex.fsti experimental/FStar.OrdMap.fsti experimental/Steel.SelArray.fsti experimental/Steel.Effect.Atomic.fsti experimental/Steel.SelEffect.Atomic.fsti experimental/Steel.HigherReference.fsti experimental/Steel.SpinLock.fsti experimental/Steel.Primitive.ForkJoin.fsti experimental/Steel.Semantics.Instantiate.fsti experimental/Steel.Heap.fsti experimental/FStar.OrdSet.fsti experimental/Steel.LockCoupling.fsti experimental/Steel.Reference.fsti experimental/FStar.ConstantTime.Integers.fsti experimental/Steel.Memory.fsti experimental/Steel.Array.fsti experimental/Steel.SelEffect.Common.fsti experimental/Steel.Effect.Common.fsti experimental/Steel.Effect.fsti experimental/Steel.MonotonicHigherReference.fsti experimental/Steel.SelEffect.fsti > .depend
# [CHECK     prims.fst]
# [CHECK     FStar.Pervasives.Native.fst]
# [CHECK     FStar.Pervasives.fsti]
# FStar.Pervasives.fsti(289,2-289,18): (Error 19) Subtyping check failed; expected type Prims.pure_wp a; got type p: Prims.pure_post a -> Prims.Tot Prims.logical; The SMT solver could not prove the query, try to spell your proof in more detail or increase fuel/ifuel (see also prims.fst(311,38-311,60))
# FStar.Pervasives.fsti(294,2-294,27): (Error 19) Subtyping check failed; expected type Prims.pure_wp b; got type p: Prims.pure_post b -> Prims.Tot Prims.pure_pre; The SMT solver could not prove the query, try to spell your proof in more detail or increase fuel/ifuel (see also prims.fst(311,38-311,60))
# FStar.Pervasives.fsti(299,2-299,40): (Error 19) Subtyping check failed; expected type Prims.pure_wp a; got type post: Prims.pure_post a -> Prims.Tot Prims.logical; The SMT solver could not prove the query, try to spell your proof in more detail or increase fuel/ifuel (see also prims.fst(311,38-311,60))
# FStar.Pervasives.fsti(304,2-304,19): (Error 19) Subtyping check failed; expected type Prims.pure_wp a; got type post: Prims.pure_post a -> Prims.Tot Prims.logical; The SMT solver could not prove the query, try to spell your proof in more detail or increase fuel/ifuel (see also prims.fst(311,38-311,60))
# FStar.Pervasives.fsti(309,2-309,23): (Error 19) Subtyping check failed; expected type Prims.pure_wp a; got type p: Prims.pure_post a -> Prims.Tot Prims.logical; The SMT solver could not prove the query, try to spell your proof in more detail or increase fuel/ifuel (see also prims.fst(311,38-311,60))
# FStar.Pervasives.fsti(314,2-314,17): (Error 19) Subtyping check failed; expected type Prims.pure_wp a; got type p: Prims.pure_post a -> Prims.Tot Prims.logical; The SMT solver could not prove the query, try to spell your proof in more detail or increase fuel/ifuel (see also prims.fst(311,38-311,60))
# FStar.Pervasives.fsti(320,2-320,19): (Error 19) Subtyping check failed; expected type Prims.pure_wp Prims.unit; got type post: Prims.pure_post Prims.unit -> Prims.Tot Prims.logical; The SMT solver could not prove the query, try to spell your proof in more detail or increase fuel/ifuel (see also prims.fst(311,38-311,60))
# FStar.Pervasives.fsti(326,2-326,19): (Error 19) Subtyping check failed; expected type Prims.pure_wp Prims.unit; got type post: Prims.pure_post Prims.unit -> Prims.Tot Prims.logical; The SMT solver could not prove the query, try to spell your proof in more detail or increase fuel/ifuel (see also prims.fst(311,38-311,60))
# FStar.Pervasives.fsti(358,25-358,58): (Error 19) assertion failed; The SMT solver could not prove the query, try to spell your proof in more detail or increase fuel/ifuel (see also prims.fst(311,38-311,60))
# make[2]: *** [Makefile.verify:51: .cache/FStar.Pervasives.fsti.checked] Error 1
# make[2]: Leaving directory '/home/opam/.opam/4.12/.opam-switch/build/fstar.2021.06.06/ulib'
# make[1]: *** [Makefile:10: all] Error 2
# make[1]: Leaving directory '/home/opam/.opam/4.12/.opam-switch/build/fstar.2021.06.06/ulib'
# make: *** [Makefile:8: all] Error 2
@tahina-pro
Copy link
Member

For the arm32 case, I'd suspect Z3 behaving differently across platforms. For the arm64/ppc64 case, I have no clue.

@msprotz
Copy link
Collaborator

msprotz commented Jan 20, 2022

Z3 4.8.5 segfaults on arm64. It returns "Killed" as its only output, but then F* cannot deal with that, raises a fatal exception. Then, F* synthesizes an incorrect backtrace and gives an unrelated error. You need to disable two try/with handlers in the OCaml output, to figure out what's happening.

(At least that's what I had on arm64.)

@kit-ty-kate
Copy link
Contributor Author

If it requires a newer version of Z3, could you have a look at ocaml/opam-repository#20065
I’m not sure if F* expects Z3 to be included statically in the program or not (i suspect it does)

If it wouldn’t be compatible with the way F* expects things to be, could you leave a comment there? (either way it would be appreciated)

@diagprov
Copy link

I have a different issue on ppc64le, unsure if related.

$ ( checkout, cd to fstar repo etc )
$ git checkout v2022.11.19
$ opam switch show
4.14.0
$ opam install --deps-only .
$ make

Here's the relevant snippet of failing build:

[OCAMLBUILD]
+ ocamlfind ocamlc -c -g -thread -package stdint -package compiler-libs -package compiler-libs.common -package menhirLib -package dynlink -package pprint -package sedlex -package yojson -package ppxlib -package process -package batteries -package zarith -package ppx_deriving.std -package ppx_deriving_yojson -I src/extraction/ml -I ulib/ml -I src/ocaml-output -I src/tests/ml -I src/tactics/ml -I src/prettyprint/ml -I src/parser/ml -I src/fstar/ml -I src/basic/ml -o src/extraction/ml/FStar_Extraction_ML_PrintML.cmo src/extraction/ml/FStar_Extraction_ML_PrintML.ml
File "src/extraction/ml/FStar_Extraction_ML_PrintML.ml", line 196, characters 55-74:
196 |      Ppat_construct (path_to_ident (path', name), Some (build_pattern pat))
                                                             ^^^^^^^^^^^^^^^^^^^
Error: This expression has type
         Ppxlib_ast.Parsetree.pattern = Parsetree.pattern
       but an expression was expected of type
         string Astlib.Ast_414.Asttypes.loc list *
         Ppxlib_ast.Parsetree.pattern
Command exited with code 2.
Compilation unsuccessful after building 255 targets (251 cached) in 00:00:00.

Sadly, I'm not knowledgeable enough about ocaml to know how this might be fixed. At a guess, this is a ppxlib issue, but I don't know what ppxlib is, I just wanted to try out fstar. Luckily I have x86 hardware as well.

The same issue occurs whether or not I opam upgrade z3 from the dependency on 4.8.5 to the current latest version in opam, 4.11.2.

@kit-ty-kate
Copy link
Contributor Author

It's not related, i was able to reproduce on arm64. However I had to use a different set of steps to manage that:

I used opam install --deps-only . before the git checkout v2022.11.19 as master wants ppxlib >= 0.27.0 but v2022.11.19 wants ppxlib >= 0.22.0 & < 0.26.0

So with:

$ ( checkout, cd to fstar repo etc )
$ git checkout v2022.11.19
$ opam switch show
4.14.0
$ opam install --deps-only .
$ make

as you've pasted here works fine for me, but:

$ ( checkout, cd to fstar repo etc )
$ opam install --deps-only .
$ git checkout v2022.11.19
$ opam switch show
4.14.0
$ make

fails with the same error that you've shown. So this should be fixed for you if you do:

$ opam install --deps-only .
$ make

as opam install --deps-only . will downgrade a number of dependencies:

$ opam install --deps .
The following actions will be performed:
=== downgrade 5 packages
  ↘ gen_js_api                  1.1.1 to 1.0.9     [uses ppxlib]
  ↘ ppx_deriving_yojson         3.7.0 to 3.6.1     [required by fstar]
  ↘ ppx_sexp_conv               v0.15.1 to v0.15.0 [uses ppxlib]
  ↘ ppxlib                      0.28.0 to 0.25.1   [required by fstar]
  ↘ sedlex                      3.0 to 2.5         [required by fstar]

@diagprov
Copy link

Ok, this got me a lot further. Somehow I did indeed have the newer dependencies, so --deps-only downgraded them. I then end up with z3 crashing - I haven't confirmed but I think this is largely the same error you have. Upgrading only z3 (opam upgrade z3) allows checking to almost complete:

experimental/Steel.Preorder.fst(228,4-228,6): (Error 19) could not prove post-condition; The SMT solver could not prove the query. Use --query_stats for more details. (see also experimental/Steel.Preorder.fst(227,78-227,99))
experimental/Steel.Preorder.fst(247,4-247,6): (Error 19) could not prove post-condition; The SMT solver could not prove the query. Use --query_stats for more details. (see also experimental/Steel.Preorder.fst(245,78-245,96)

Of course I'm receiving a lot of warnings like this:

(Warning 282) Expected Z3 version "Z3 version 4.8.5", got "Z3 version 4.11.2 - 64 bit
"
Please download the version of Z3 corresponding to your platform from:
https://github.com/FStarLang/binaries/tree/master/z3-tested
and add the bin/ subdirectory into your PATH

but building z3 myself at 4.8.5 and prepending it to the path so it is used irrespective of ocaml dependencies reproduces your error.

I don't know if these experimental builds can be disabled, I'll have a grep through the source to see if I can find some flags.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants