MData tag for expressions that are proofs.
Equations
- Aesop.mdataPINFIsProofName = `Aesop.pinfIsProof
Instances For
Modify d to indicate that the enclosed expression is a proof.
Equations
Instances For
Check whether d indicates that the enclosed expression is a proof.
Equations
Instances For
Check whether two expressions in PINF are equal. We assume that the two expressions are type-correct, in PINF and have defeq types.
Equations
- Aesop.pinfEqCore (Lean.Expr.bvar i₁) (Lean.Expr.bvar i₂) = (i₁ == i₂)
- Aesop.pinfEqCore (Lean.Expr.fvar id₁) (Lean.Expr.fvar id₂) = (id₁ == id₂)
- Aesop.pinfEqCore (Lean.Expr.mvar id₁) (Lean.Expr.mvar id₂) = (id₁ == id₂)
- Aesop.pinfEqCore (Lean.Expr.sort u) (Lean.Expr.sort v) = (u == v)
- Aesop.pinfEqCore (Lean.Expr.const n₁ us) (Lean.Expr.const n₂ vs) = (n₁ == n₂ && us == vs)
- Aesop.pinfEqCore (f₁.app e₁) (f₂.app e₂) = (Aesop.pinfEq f₁ f₂ && Aesop.pinfEq e₁ e₂)
- Aesop.pinfEqCore (Lean.Expr.lam binderName t₁ e₁ bi₁) (Lean.Expr.lam binderName_1 t₂ e₂ bi₂) = (bi₁ == bi₂ && Aesop.pinfEq t₁ t₂ && Aesop.pinfEq e₁ e₂)
- Aesop.pinfEqCore (Lean.Expr.forallE binderName t₁ e₁ bi₁) (Lean.Expr.forallE binderName_1 t₂ e₂ bi₂) = (bi₁ == bi₂ && Aesop.pinfEq t₁ t₂ && Aesop.pinfEq e₁ e₂)
- Aesop.pinfEqCore (Lean.Expr.letE declName t₁ v₁ e₁ nondep) (Lean.Expr.letE declName_1 t₂ v₂ e₂ nondep_1) = (Aesop.pinfEq v₁ v₂ && Aesop.pinfEq t₁ t₂ && Aesop.pinfEq e₁ e₂)
- Aesop.pinfEqCore (Lean.Expr.lit l₁) (Lean.Expr.lit l₂) = (l₁ == l₂)
- Aesop.pinfEqCore (Lean.Expr.proj n₁ i₁ e₁) (Lean.Expr.proj n₂ i₂ e₂) = (i₁ == i₂ && n₁ == n₂ && Aesop.pinfEq e₁ e₂)
- Aesop.pinfEqCore (Lean.Expr.mdata d e₁) x✝ = (Aesop.mdataIsProof d || Aesop.pinfEq e₁ x✝)
- Aesop.pinfEqCore x✝ (Lean.Expr.mdata d e₂) = (Aesop.mdataIsProof d || Aesop.pinfEq x✝ e₂)
- Aesop.pinfEqCore x✝¹ x✝ = false
Instances For
Check whether two expressions in PINF are equal. We assume that the two expressions are type-correct, in PINF and have defeq types.
Equations
- Aesop.pinfEq x y = (Aesop.pinfEq.unsafe_impl_3 x y || Aesop.pinfEqCore x y)
Instances For
Compute the PINF hash of an expression in PINF. The hash ignores binder
names, binder info and proofs marked by mdataPINFIsProofName.
Compute the PINF hash of an expression in PINF. The hash ignores binder
names, binder info and proofs marked by mdataPINFIsProofName.
Equations
- Aesop.pinfHash e = runST fun (x : Type) => (Aesop.pinfHashCore e).run' ∅
Instances For
Equations
- Aesop.instInhabitedPINFRaw.default = { toExpr := default }
Instances For
Equations
Equations
- Aesop.instBEqPINFRaw = { beq := fun (x y : Aesop.PINFRaw md) => Aesop.pinfEq x.toExpr y.toExpr }
Equations
- Aesop.instHashablePINFRaw = { hash := fun (x : Aesop.PINFRaw md) => Aesop.pinfHash x.toExpr }
Equations
- Aesop.instToStringPINFRaw = { toString := fun (x : Aesop.PINFRaw md) => toString x.toExpr }
Equations
- Aesop.instToFormatPINFRaw = { format := fun (x : Aesop.PINFRaw md) => Std.format x.toExpr }
Equations
- Aesop.instToMessageDataPINFRaw = { toMessageData := fun (x : Aesop.PINFRaw md) => Lean.toMessageData x.toExpr }
An expression in PINF at reducible transparency.
Instances For
Equations
Instances For
Equations
An expression in PINF at transparency md, together with its PINF hash as
computed by pinfHash.
Instances For
Equations
- Aesop.instInhabitedPINF = { default := Aesop.instInhabitedPINF.default }
Instances For
Equations
- Aesop.instBEqPINF = { beq := fun (x y : Aesop.PINF md) => Aesop.pinfEq x.toExpr y.toExpr }
Equations
- Aesop.instHashablePINF = { hash := fun (x : Aesop.PINF md) => x.hash }
Equations
- Aesop.instOrdPINF = { compare := fun (x y : Aesop.PINF md) => if (x == y) = true then Ordering.eq else if x.toExpr.lt y.toExpr = true then Ordering.lt else Ordering.gt }
Equations
- Aesop.instToStringPINF = { toString := fun (x : Aesop.PINF md) => toString x.toExpr }
Equations
- Aesop.instToFormatPINF = { format := fun (x : Aesop.PINF md) => Std.format x.toExpr }
Equations
- Aesop.instToMessageDataPINF = { toMessageData := fun (x : Aesop.PINF md) => Lean.toMessageData x.toExpr }
An expression in RPINF together with its RPINF hash.