Theorems / mh_alge_692c04

Mathlib held-out

Algebra · medium

Statement, exactly as the model and Lean see it
theorem lg_target (R : Type u_1) (A : Type u_2) (L : Type u_3) [CommRing A] [LieRing L] [_root_.Module A L] [LieRingModule L A] [LieRinehartRing A L] [CommRing R] [Algebra R A] [LieAlgebra R L] : LieRinehartAlgebra R A L = LieRinehartAlgebra R A L := by
Mathlib declaration
LieRinehartAlgebra.congr_simp
Held-out module
Mathlib.Algebra.LieRinehartAlgebra.Subalgebra
Banned modules (itself + downstream)
1
Reference proof premises (reachable / held-out)
0 / 0

Traces

Each configuration's full record: what was retrieved, what the model wrote, what Lean said back.

Verified3 model calls · 3 Lean checks · $0.00093

Retrieved lemmas

  1. 1. LieRinehartAlgebra.toLieModule
  2. 2. LieRinehartAlgebra.toIsScalarTower
  3. 3. LieRinehartAlgebra.anchor_apply
  4. 4. LieRinehartAlgebra.Hom.apply_lie
  5. 5. LieRinehartAlgebra.Hom.apply_lie'
  6. 6. LieRinehartAlgebra.Hom.toLinearMap'_apply
  7. 7. LieRinehartAlgebra.Hom.map_smul_apply
  8. 8. LieSubmodule.lie_baseChange

Plan

The theorem you're trying to prove is a tautology: it states that a Lie Rinehart algebra is equal to itself. This is trivially true, but the proof requires verifying that all necessary structures and assumptions are in place to ensure that the type `LieRinehartAlgebra R A L` is well-defined. In Lean, this kind of theorem is often just a way to make sure that all the required instances and lemmas are available. The proof can be completed by showing that the relevant structure (i.e., the Lie Rinehart algebra) is consistent with the given assumptions. --- Here's a skeleton of a tactic proof using `have` statements and `sorry`, which you can later fill in or replace with actual proofs: This proof uses `rfl` for the final equality because both sides are identical, and the first `have` is a placeholder to ensure the structure is valid. You would replace the first `have` with a proper construction of the Lie Rinehart algebra if needed.

Skeleton — Lean reported problems
-- Since both sides are the same type, we only need to show that all assumptions are valid.
have : LieRinehartAlgebra R A L : Type :=
  sorry -- To be filled with a proof that the structure is properly defined.
have : LieRinehartAlgebra R A L = LieRinehartAlgebra R A L :=
  rfl -- Trivial equality since both sides are the same term.
exact this

Attempts

  1. sample 0 · round 0Wrong namespace2.0 s model time
    Proof
    rw [LieRinehartAlgebra.mk_eq_mk]
    constructor
    all_goals {
      exact LieRinehartAlgebra.mk R A L (LieRinehartAlgebra.mk R A L)
    }
    What Lean printed (this is all the model sees on repair)
    4:6: error: Unknown constant `LieRinehartAlgebra.mk_eq_mk`
    3:251: error: unsolved goals
    R : Type u_1
    A : Type u_2
    L : Type u_3
    inst✝⁷ : CommRing A
    inst✝⁶ : LieRing L
    inst✝⁵ : Module A L
    inst✝⁴ : LieRingModule L A
    inst✝³ : LieRinehartRing A L
    inst✝² : CommRing R
    inst✝¹ : Algebra R A
    inst✝ : LieAlgebra R L
    ⊢ LieRinehartAlgebra R A L = LieRinehartAlgebra R A L
  2. sample 0 · round 1Verified1.7 s model time
    Proof
    constructor
    all_goals {
      exact LieRinehartAlgebra.mk R A L (LieRinehartAlgebra.mk R A L)
    }

Verified proof

theorem lg_target (R : Type u_1) (A : Type u_2) (L : Type u_3) [CommRing A] [LieRing L] [_root_.Module A L] [LieRingModule L A] [LieRinehartRing A L] [CommRing R] [Algebra R A] [LieAlgebra R L] : LieRinehartAlgebra R A L = LieRinehartAlgebra R A L := by
  constructor
  all_goals {
    exact LieRinehartAlgebra.mk R A L (LieRinehartAlgebra.mk R A L)
  }

Axioms used: propext, Quot.sound

Reference proof

Mathlib's own source for this declaration, shown for comparison. It may use lemmas the prover is not allowed to use.