Zulip Chat Archive

Stream: mathlib4

Topic: Apparent equality... but cannot conclude it


H Segawa (Sep 14 2024 at 14:07):

hello...im newbie to lean

my innocent brain tells these are apparently equal, but cannot prove it.

 ⟨|-x' 0 + y' 0|, ⋯⟩ = ⟨|x' 0 - y' 0|, ⋯⟩

but cannot prove the equality

import Mathlib.Data.Real.Basic
import Mathlib.Data.Matrix.Basic
import Mathlib.Data.Fintype.Basic
import Mathlib.Tactic.FinCases
import Mathlib.Analysis.ODE.Gronwall

--set_option pp.proofs true

open Metric Real
open scoped NNReal Matrix Fintype

example {t a: }{m : Matrix (Fin 2) (Fin 2) }
  (hm : m = (![![0,1],![-1,0]]: Matrix (Fin 2) (Fin 2) ))
    :
     LipschitzWith 1 ((fun t'' v  => m *ᵥ v) t') := by
    rw[LipschitzWith]
    intro x' y'
    have  hx , hy  : x' = ![x' 0 , x' 1]  y' = ![y' 0, y' 1] := by
      constructor <;> ext i <;> fin_cases i <;> simp
    rw[hx,hy]
    rw[hm]
    repeat dsimp[edist]
    repeat simp[PseudoEMetricSpace.toEDist]
    repeat dsimp[PseudoMetricSpace.edist]
    intro i
    fin_cases i
    -- subproof
    simp[Matrix.mulVec]
    apply Finset.le_sup_of_le
    change 1  (Fin.fintype 2).1
    rw[Fintype.elems]
    apply Finset.insert_eq_self.mp rfl
    simp
    -- subproof
    simp[Matrix.mulVec]
    apply Finset.le_sup_of_le
    change 0  (Fin.fintype 2).1
    rw[Fintype.elems]
    apply Finset.insert_eq_self.mp rfl
    simp
    apply le_of_eq
    admit

Vincent Beffara (Sep 14 2024 at 14:19):

import Mathlib.Data.Real.Basic
import Mathlib.Data.Matrix.Basic
import Mathlib.Data.Fintype.Basic
import Mathlib.Tactic.FinCases
import Mathlib.Analysis.ODE.Gronwall
--set_option pp.proofs true

open Metric Real
open scoped NNReal Matrix Fintype

example {t a: }{m : Matrix (Fin 2) (Fin 2) }
  (hm : m = (![![0,1],![-1,0]]: Matrix (Fin 2) (Fin 2) ))
    :
     LipschitzWith 1 ((fun t'' v  => m *ᵥ v) t') := by
    rw[LipschitzWith]
    intro x' y'
    have  hx , hy  : x' = ![x' 0 , x' 1]  y' = ![y' 0, y' 1] := by
      constructor <;> ext i <;> fin_cases i <;> simp
    rw[hx,hy]
    rw[hm]
    repeat dsimp[edist]
    repeat simp[PseudoEMetricSpace.toEDist]
    repeat dsimp[PseudoMetricSpace.edist]
    intro i
    fin_cases i
    -- subproof
    simp[Matrix.mulVec]
    apply Finset.le_sup_of_le
    change 1  (Fin.fintype 2).1
    rw[Fintype.elems]
    apply Finset.insert_eq_self.mp rfl
    simp
    -- subproof
    simp[Matrix.mulVec]
    apply Finset.le_sup_of_le
    change 0  (Fin.fintype 2).1
    rw[Fintype.elems]
    apply Finset.insert_eq_self.mp rfl
    simp
    apply le_of_eq

    congr 1
    apply abs_eq_abs.mpr
    ring_nf
    simp

H Segawa (Sep 14 2024 at 20:46):

Thank you.
congr 1 is the key to the equality.


Last updated: May 02 2025 at 03:31 UTC