Documentation

Aesop.Util.EqualUpToIds

  • commonMCtx? : Option Lean.MetavarContext
  • mctx₁ : Lean.MetavarContext
  • mctx₂ : Lean.MetavarContext
  • allowAssignmentDiff : Bool

    Allow metavariables to be unassigned on one side of the comparison and assigned on the other. So when we compare two expressions and we encounter a metavariable ?x in one of them and a subexpression e in the other (at the same position), we consider ?x equal to e.

Instances For
    • equalMVarIds : Std.HashMap Lean.MVarId Lean.MVarId
    • equalLMVarIds : Std.HashMap Lean.LMVarId Lean.LMVarId
    • leftUnassignedMVarValues : Std.HashMap Lean.MVarId Lean.Expr

      A map from metavariables which are unassigned in the left goal to their corresponding expression in the right goal. Only used when allowAssignmentDiff = true.

    • rightUnassignedMVarValues : Std.HashMap Lean.MVarId Lean.Expr

      A map from metavariables which are unassigned in the right goal to their corresponding expression in the left goal. Only used when allowAssignmentDiff = true.

    Instances For
      @[reducible, inline]
      Equations
      Instances For
        @[implicit_reducible, always_inline]
        Equations
        def Aesop.EqualUpToIdsM.run' {α : Type} (x : EqualUpToIdsM α) (commonMCtx? : Option Lean.MetavarContext) (mctx₁ mctx₂ : Lean.MetavarContext) (allowAssignmentDiff : Bool) :
        Lean.MetaM (α × State)
        Equations
        • x.run' commonMCtx? mctx₁ mctx₂ allowAssignmentDiff = (x { commonMCtx? := commonMCtx?, mctx₁ := mctx₁, mctx₂ := mctx₂, allowAssignmentDiff := allowAssignmentDiff }).run { }
        Instances For
          def Aesop.EqualUpToIdsM.run {α : Type} (x : EqualUpToIdsM α) (commonMCtx? : Option Lean.MetavarContext) (mctx₁ mctx₂ : Lean.MetavarContext) (allowAssignmentDiff : Bool) :
          Lean.MetaM α
          Equations
          • x.run commonMCtx? mctx₁ mctx₂ allowAssignmentDiff = (fun (x : α × Aesop.EqualUpToIdsM.State) => x.fst) <$> x.run' commonMCtx? mctx₁ mctx₂ allowAssignmentDiff
          Instances For
            @[inline]
            def Aesop.EqualUpToIds.readCommonMCtx? :
            EqualUpToIdsM (Option Lean.MetavarContext)
            Equations
            Instances For
              @[inline]
              Equations
              Instances For
                @[inline]
                Equations
                Instances For
                  @[specialize #[]]
                  def Aesop.EqualUpToIds.equalCommonLMVars? (lmvarId₁ lmvarId₂ : Lean.LMVarId) :
                  EqualUpToIdsM (Option Bool)
                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[specialize #[]]
                    def Aesop.EqualUpToIds.equalCommonMVars? (mvarId₁ mvarId₂ : Lean.MVarId) :
                    EqualUpToIdsM (Option Bool)
                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      • lctx₁ : Lean.LocalContext
                      • localInstances₁ : Lean.LocalInstances
                      • lctx₂ : Lean.LocalContext
                      • localInstances₂ : Lean.LocalInstances
                      • equalFVarIds : Std.HashMap Lean.FVarId Lean.FVarId
                      Instances For
                        • mvarId (mvarId : Lean.MVarId) : MVarValue
                        • expr (e : Lean.Expr) : MVarValue
                        • delayedAssignment (da : Lean.DelayedMetavarAssignment) : MVarValue
                        Instances For
                          @[specialize #[]]
                          unsafe def Aesop.EqualUpToIds.Unsafe.levelsEqualUpToIdsCore (l₁ l₂ : Lean.Level) :
                          Equations
                          Instances For
                            @[specialize #[]]
                            unsafe def Aesop.EqualUpToIds.Unsafe.levelsEqualUpToIdsCore' :
                            Lean.LevelLean.LevelEqualUpToIdsM Bool
                            Equations
                            Instances For
                              @[implemented_by Aesop.EqualUpToIds.Unsafe.levelsEqualUpToIdsCore]
                              opaque Aesop.EqualUpToIds.levelsEqualUpToIdsCore (l₁ l₂ : Lean.Level) :
                              @[reducible, inline]
                              Equations
                              Instances For
                                @[specialize #[]]
                                unsafe def Aesop.EqualUpToIds.Unsafe.exprsEqualUpToIdsCore₁ (e₁ e₂ : Lean.Expr) :
                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  @[specialize #[]]
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    @[specialize #[]]
                                    unsafe def Aesop.EqualUpToIds.Unsafe.exprsEqualUpToIdsCore₃ :
                                    Lean.ExprLean.ExprExprsEqualUpToIdsM Bool
                                    Equations
                                    Instances For
                                      @[specialize #[]]
                                      unsafe def Aesop.EqualUpToIds.Unsafe.localDeclsEqualUpToIdsCore (ldecl₁ ldecl₂ : Lean.LocalDecl) :
                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        @[specialize #[]]
                                        unsafe def Aesop.EqualUpToIds.Unsafe.localContextsEqualUpToIdsCore (lctx₁ lctx₂ : Lean.LocalContext) (localInstances₁ localInstances₂ : Lean.LocalInstances) :
                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For
                                          @[specialize #[]]
                                          unsafe def Aesop.EqualUpToIds.Unsafe.unassignedMVarsEqualUpToIdsCore (mvarId₁ mvarId₂ : Lean.MVarId) :
                                          Equations
                                          • One or more equations did not get rendered due to their size.
                                          Instances For
                                            @[implemented_by Aesop.EqualUpToIds.Unsafe.exprsEqualUpToIdsCore₁]
                                            opaque Aesop.EqualUpToIds.exprsEqualUpToIdsCore (e₁ e₂ : Lean.Expr) :
                                            @[implemented_by Aesop.EqualUpToIds.Unsafe.unassignedMVarsEqualUpToIdsCore]
                                            opaque Aesop.EqualUpToIds.unassignedMVarsEqualUpToIdsCore (mvarId₁ mvarId₂ : Lean.MVarId) :
                                            @[specialize #[]]
                                            def Aesop.EqualUpToIds.tacticStatesEqualUpToIdsCore (goals₁ goals₂ : Array Lean.MVarId) :
                                            Equations
                                            • One or more equations did not get rendered due to their size.
                                            Instances For
                                              def Aesop.exprsEqualUpToIds (mctx₁ mctx₂ : Lean.MetavarContext) (lctx₁ lctx₂ : Lean.LocalContext) (localInstances₁ localInstances₂ : Lean.LocalInstances) (e₁ e₂ : Lean.Expr) (allowAssignmentDiff : Bool := false) :
                                              Lean.MetaM Bool
                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              Instances For
                                                def Aesop.exprsEqualUpToIds' (e₁ e₂ : Lean.Expr) (allowAssignmentDiff : Bool := false) :
                                                Lean.MetaM Bool
                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                Instances For
                                                  def Aesop.unassignedMVarsEqualUptoIds (commonMCtx? : Option Lean.MetavarContext) (mctx₁ mctx₂ : Lean.MetavarContext) (mvarId₁ mvarId₂ : Lean.MVarId) (allowAssignmentDiff : Bool := false) :
                                                  Lean.MetaM Bool
                                                  Equations
                                                  • One or more equations did not get rendered due to their size.
                                                  Instances For
                                                    def Aesop.unassignedMVarsEqualUptoIds' (commonMCtx? : Option Lean.MetavarContext) (mctx₁ mctx₂ : Lean.MetavarContext) (mvarId₁ mvarId₂ : Lean.MVarId) (allowAssignmentDiff : Bool := false) :
                                                    Lean.MetaM (Bool × EqualUpToIdsM.State)
                                                    Equations
                                                    • One or more equations did not get rendered due to their size.
                                                    Instances For
                                                      def Aesop.tacticStatesEqualUpToIds (commonMCtx? : Option Lean.MetavarContext) (mctx₁ mctx₂ : Lean.MetavarContext) (goals₁ goals₂ : Array Lean.MVarId) (allowAssignmentDiff : Bool := false) :
                                                      Lean.MetaM Bool
                                                      Equations
                                                      • One or more equations did not get rendered due to their size.
                                                      Instances For
                                                        def Aesop.tacticStatesEqualUpToIds' (commonMCtx? : Option Lean.MetavarContext) (mctx₁ mctx₂ : Lean.MetavarContext) (goals₁ goals₂ : Array Lean.MVarId) (allowAssignmentDiff : Bool := false) :
                                                        Lean.MetaM (Bool × EqualUpToIdsM.State)
                                                        Equations
                                                        • One or more equations did not get rendered due to their size.
                                                        Instances For