Back to NPA

Module

Mathlib.Analysis.Calculus.ImplicitFunction.Phi

npa-mathlib

Packages

2

Module

63

Theorems

750

Declarations

1016

Untrusted sidecar

Source text and display overlays are presentation metadata. The signed certificate and checker result are the trusted evidence.

Theorems

13

Definitions

5

Inductive types

0

Axioms

1

Declarations

ImplicitPhiCoord

forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (...

definition

ImplicitPhi

forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (...

definition

ImplicitPhiDerivativeMap

forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (...

definition

ImplicitPhiDerivativeArgs

forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (...

definition

ImplicitPhiIsoArgs

forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (...

definition

implicit_phi_coord_def

forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (...

theorem

implicit_phi_def

forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (...

theorem

implicit_phi_coord_base_value_from_zero

forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (...

theorem

implicit_phi_derivative_map_def

forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (...

theorem

implicit_phi_full_derivative_from_args

forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (...

theorem

implicit_phi_partial_x_from_args

forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (...

theorem

implicit_phi_partial_y_from_args

forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (...

theorem

implicit_phi_derivative_from_args

forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (...

theorem

implicit_phi_dy_iso_from_args

forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (...

theorem

implicit_phi_block_triangular_args_from_args

forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (...

theorem

implicit_phi_linear_iso_from_args

forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (...

theorem

implicit_phi_block_left_inverse_from_args

forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (...

theorem

implicit_phi_block_right_inverse_from_args

forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (...

theorem

Eq.rec

axiom

Hashes

source
sha256:746667e3cdabc718d17756ef8a961fb84c393cb3a2677374121687ff28e76e5f
certificateFile
sha256:e7951516c245ba3359d036917e34966627b1540bc9db3583501cb37c84f2a5c6
export
sha256:60eb204552d70bd36579339db92c140cfcd00fb680854f21416955cc49f16e9b
axiomReport
sha256:9f292648aa00dddbe49e31f78bc11448b5ee88db69aba9ec37edaa67a112d59b
certificate
sha256:97c25c688a9eca54d4e111a21569cee25b1ede25c14893f973bf52d4de030672

Source

import Std.Logic.Eq
import Mathlib.Logic.EqReasoning
import Mathlib.LinearAlgebra.VectorSpace
import Mathlib.Analysis.NormedSpace.Basic
import Mathlib.Analysis.LinearMap
import Mathlib.Analysis.Calculus.Derivative

def ImplicitPhiCoord.{p,q,u,v,w,z} :
  forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (a : Scalar), Scalar), forall (sub : forall (a : Scalar), forall (b : Scalar), Scalar), forall (mul : forall (a : Scalar), forall (b : Scalar), Scalar), forall (le_rel : forall (a : Scalar), forall (b : Scalar), Prop), forall (X : Sort v), forall (xzero : X), forall (xadd : forall (x : X), forall (y : X), X), forall (xneg : forall (x : X), X), forall (xsmul : forall (a : Scalar), forall (x : X), X), forall (xnorm : forall (x : X), Scalar), forall (Y : Sort w), forall (yzero : Y), forall (yadd : forall (x : Y), forall (y : Y), Y), forall (yneg : forall (y : Y), Y), forall (ysmul : forall (a : Scalar), forall (y : Y), Y), forall (ynorm : forall (y : Y), Scalar), forall (Z : Sort z), forall (zzero : Z), forall (zadd : forall (x : Z), forall (y : Z), Z), forall (zneg : forall (z : Z), Z), forall (zsmul : forall (a : Scalar), forall (z : Z), Z), forall (znorm : forall (z : Z), Scalar), forall (XY : Sort p), forall (xyzero : XY), forall (xyadd : forall (x : XY), forall (y : XY), XY), forall (xyneg : forall (x : XY), XY), forall (xysmul : forall (a : Scalar), forall (x : XY), XY), forall (xynorm : forall (x : XY), Scalar), forall (pairXY : forall (x : X), forall (y : Y), XY), forall (fstXY : forall (point : XY), X), forall (sndXY : forall (point : XY), Y), forall (XZ : Sort q), forall (xzzero : XZ), forall (xzadd : forall (x : XZ), forall (y : XZ), XZ), forall (xzneg : forall (x : XZ), XZ), forall (xzsmul : forall (a : Scalar), forall (x : XZ), XZ), forall (xznorm : forall (x : XZ), Scalar), forall (pairXZ : forall (x : X), forall (z : Z), XZ), forall (fstXZ : forall (point : XZ), X), forall (sndXZ : forall (point : XZ), Z), forall (F : forall (point : XY), Z), forall (base_x : X), forall (base_y : Y), forall (x : X), forall (y : Y), XZ :=
  fun Scalar => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun le_rel => fun X => fun xzero => fun xadd => fun xneg => fun xsmul => fun xnorm => fun Y => fun yzero => fun yadd => fun yneg => fun ysmul => fun ynorm => fun Z => fun zzero => fun zadd => fun zneg => fun zsmul => fun znorm => fun XY => fun xyzero => fun xyadd => fun xyneg => fun xysmul => fun xynorm => fun pairXY => fun fstXY => fun sndXY => fun XZ => fun xzzero => fun xzadd => fun xzneg => fun xzsmul => fun xznorm => fun pairXZ => fun fstXZ => fun sndXZ => fun F => fun base_x => fun base_y => fun x => fun y => pairXZ x (F (pairXY x y))

def ImplicitPhi.{p,q,u,v,w,z} :
  forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (a : Scalar), Scalar), forall (sub : forall (a : Scalar), forall (b : Scalar), Scalar), forall (mul : forall (a : Scalar), forall (b : Scalar), Scalar), forall (le_rel : forall (a : Scalar), forall (b : Scalar), Prop), forall (X : Sort v), forall (xzero : X), forall (xadd : forall (x : X), forall (y : X), X), forall (xneg : forall (x : X), X), forall (xsmul : forall (a : Scalar), forall (x : X), X), forall (xnorm : forall (x : X), Scalar), forall (Y : Sort w), forall (yzero : Y), forall (yadd : forall (x : Y), forall (y : Y), Y), forall (yneg : forall (y : Y), Y), forall (ysmul : forall (a : Scalar), forall (y : Y), Y), forall (ynorm : forall (y : Y), Scalar), forall (Z : Sort z), forall (zzero : Z), forall (zadd : forall (x : Z), forall (y : Z), Z), forall (zneg : forall (z : Z), Z), forall (zsmul : forall (a : Scalar), forall (z : Z), Z), forall (znorm : forall (z : Z), Scalar), forall (XY : Sort p), forall (xyzero : XY), forall (xyadd : forall (x : XY), forall (y : XY), XY), forall (xyneg : forall (x : XY), XY), forall (xysmul : forall (a : Scalar), forall (x : XY), XY), forall (xynorm : forall (x : XY), Scalar), forall (pairXY : forall (x : X), forall (y : Y), XY), forall (fstXY : forall (point : XY), X), forall (sndXY : forall (point : XY), Y), forall (XZ : Sort q), forall (xzzero : XZ), forall (xzadd : forall (x : XZ), forall (y : XZ), XZ), forall (xzneg : forall (x : XZ), XZ), forall (xzsmul : forall (a : Scalar), forall (x : XZ), XZ), forall (xznorm : forall (x : XZ), Scalar), forall (pairXZ : forall (x : X), forall (z : Z), XZ), forall (fstXZ : forall (point : XZ), X), forall (sndXZ : forall (point : XZ), Z), forall (F : forall (point : XY), Z), forall (base_x : X), forall (base_y : Y), forall (point : XY), XZ :=
  fun Scalar => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun le_rel => fun X => fun xzero => fun xadd => fun xneg => fun xsmul => fun xnorm => fun Y => fun yzero => fun yadd => fun yneg => fun ysmul => fun ynorm => fun Z => fun zzero => fun zadd => fun zneg => fun zsmul => fun znorm => fun XY => fun xyzero => fun xyadd => fun xyneg => fun xysmul => fun xynorm => fun pairXY => fun fstXY => fun sndXY => fun XZ => fun xzzero => fun xzadd => fun xzneg => fun xzsmul => fun xznorm => fun pairXZ => fun fstXZ => fun sndXZ => fun F => fun base_x => fun base_y => fun point => @ImplicitPhiCoord.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y (fstXY point) (sndXY point)

def ImplicitPhiDerivativeMap.{p,q,u,v,w,z} :
  forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (a : Scalar), Scalar), forall (sub : forall (a : Scalar), forall (b : Scalar), Scalar), forall (mul : forall (a : Scalar), forall (b : Scalar), Scalar), forall (le_rel : forall (a : Scalar), forall (b : Scalar), Prop), forall (X : Sort v), forall (xzero : X), forall (xadd : forall (x : X), forall (y : X), X), forall (xneg : forall (x : X), X), forall (xsmul : forall (a : Scalar), forall (x : X), X), forall (xnorm : forall (x : X), Scalar), forall (Y : Sort w), forall (yzero : Y), forall (yadd : forall (x : Y), forall (y : Y), Y), forall (yneg : forall (y : Y), Y), forall (ysmul : forall (a : Scalar), forall (y : Y), Y), forall (ynorm : forall (y : Y), Scalar), forall (Z : Sort z), forall (zzero : Z), forall (zadd : forall (x : Z), forall (y : Z), Z), forall (zneg : forall (z : Z), Z), forall (zsmul : forall (a : Scalar), forall (z : Z), Z), forall (znorm : forall (z : Z), Scalar), forall (XY : Sort p), forall (xyzero : XY), forall (xyadd : forall (x : XY), forall (y : XY), XY), forall (xyneg : forall (x : XY), XY), forall (xysmul : forall (a : Scalar), forall (x : XY), XY), forall (xynorm : forall (x : XY), Scalar), forall (pairXY : forall (x : X), forall (y : Y), XY), forall (fstXY : forall (point : XY), X), forall (sndXY : forall (point : XY), Y), forall (XZ : Sort q), forall (xzzero : XZ), forall (xzadd : forall (x : XZ), forall (y : XZ), XZ), forall (xzneg : forall (x : XZ), XZ), forall (xzsmul : forall (a : Scalar), forall (x : XZ), XZ), forall (xznorm : forall (x : XZ), Scalar), forall (pairXZ : forall (x : X), forall (z : Z), XZ), forall (fstXZ : forall (point : XZ), X), forall (sndXZ : forall (point : XZ), Z), forall (F : forall (point : XY), Z), forall (base_x : X), forall (base_y : Y), forall (dFx : forall (h : X), Z), forall (dFy : forall (h : Y), Z), forall (dFy_inv : forall (z : Z), Y), forall (h : XY), XZ :=
  fun Scalar => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun le_rel => fun X => fun xzero => fun xadd => fun xneg => fun xsmul => fun xnorm => fun Y => fun yzero => fun yadd => fun yneg => fun ysmul => fun ynorm => fun Z => fun zzero => fun zadd => fun zneg => fun zsmul => fun znorm => fun XY => fun xyzero => fun xyadd => fun xyneg => fun xysmul => fun xynorm => fun pairXY => fun fstXY => fun sndXY => fun XZ => fun xzzero => fun xzadd => fun xzneg => fun xzsmul => fun xznorm => fun pairXZ => fun fstXZ => fun sndXZ => fun F => fun base_x => fun base_y => fun dFx => fun dFy => fun dFy_inv => @BlockTriangularMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv

def ImplicitPhiDerivativeArgs.{p,q,u,v,w,z} :
  forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (a : Scalar), Scalar), forall (sub : forall (a : Scalar), forall (b : Scalar), Scalar), forall (mul : forall (a : Scalar), forall (b : Scalar), Scalar), forall (le_rel : forall (a : Scalar), forall (b : Scalar), Prop), forall (X : Sort v), forall (xzero : X), forall (xadd : forall (x : X), forall (y : X), X), forall (xneg : forall (x : X), X), forall (xsmul : forall (a : Scalar), forall (x : X), X), forall (xnorm : forall (x : X), Scalar), forall (Y : Sort w), forall (yzero : Y), forall (yadd : forall (x : Y), forall (y : Y), Y), forall (yneg : forall (y : Y), Y), forall (ysmul : forall (a : Scalar), forall (y : Y), Y), forall (ynorm : forall (y : Y), Scalar), forall (Z : Sort z), forall (zzero : Z), forall (zadd : forall (x : Z), forall (y : Z), Z), forall (zneg : forall (z : Z), Z), forall (zsmul : forall (a : Scalar), forall (z : Z), Z), forall (znorm : forall (z : Z), Scalar), forall (XY : Sort p), forall (xyzero : XY), forall (xyadd : forall (x : XY), forall (y : XY), XY), forall (xyneg : forall (x : XY), XY), forall (xysmul : forall (a : Scalar), forall (x : XY), XY), forall (xynorm : forall (x : XY), Scalar), forall (pairXY : forall (x : X), forall (y : Y), XY), forall (fstXY : forall (point : XY), X), forall (sndXY : forall (point : XY), Y), forall (XZ : Sort q), forall (xzzero : XZ), forall (xzadd : forall (x : XZ), forall (y : XZ), XZ), forall (xzneg : forall (x : XZ), XZ), forall (xzsmul : forall (a : Scalar), forall (x : XZ), XZ), forall (xznorm : forall (x : XZ), Scalar), forall (pairXZ : forall (x : X), forall (z : Z), XZ), forall (fstXZ : forall (point : XZ), X), forall (sndXZ : forall (point : XZ), Z), forall (F : forall (point : XY), Z), forall (base_x : X), forall (base_y : Y), forall (dF : forall (h : XY), Z), forall (dFx : forall (h : X), Z), forall (dFy : forall (h : Y), Z), forall (dFy_inv : forall (z : Z), Y), forall (F_bound : Scalar), forall (F_remainder : forall (r : Z), Prop), forall (partial_x_bound : Scalar), forall (partial_x_remainder : forall (r : Z), Prop), forall (partial_y_bound : Scalar), forall (partial_y_remainder : forall (r : Z), Prop), forall (phi_bound : Scalar), forall (phi_remainder : forall (r : XZ), Prop), Prop :=
  fun Scalar => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun le_rel => fun X => fun xzero => fun xadd => fun xneg => fun xsmul => fun xnorm => fun Y => fun yzero => fun yadd => fun yneg => fun ysmul => fun ynorm => fun Z => fun zzero => fun zadd => fun zneg => fun zsmul => fun znorm => fun XY => fun xyzero => fun xyadd => fun xyneg => fun xysmul => fun xynorm => fun pairXY => fun fstXY => fun sndXY => fun XZ => fun xzzero => fun xzadd => fun xzneg => fun xzsmul => fun xznorm => fun pairXZ => fun fstXZ => fun sndXZ => fun F => fun base_x => fun base_y => fun dF => fun dFx => fun dFy => fun dFy_inv => fun F_bound => fun F_remainder => fun partial_x_bound => fun partial_x_remainder => fun partial_y_bound => fun partial_y_remainder => fun phi_bound => fun phi_remainder => forall (P : Prop), forall (mk : forall (F_at_law : @FrechetDerivativeAt.{u,p,z} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm Z zzero zadd zneg zsmul znorm F (pairXY base_x base_y) dF F_bound F_remainder), forall (partial_x_law : @FrechetDerivativeAt.{u,v,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Z zzero zadd zneg zsmul znorm (@PartialXMap.{p,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY F base_y) base_x dFx partial_x_bound partial_x_remainder), forall (partial_y_law : @FrechetDerivativeAt.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm (@PartialYMap.{p,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY F base_x) base_y dFy partial_y_bound partial_y_remainder), forall (phi_at_law : @FrechetDerivativeAt.{u,p,q} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm XZ xzzero xzadd xzneg xzsmul xznorm (@ImplicitPhi.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y) (pairXY base_x base_y) (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv) phi_bound phi_remainder), P), P

def ImplicitPhiIsoArgs.{p,q,u,v,w,z} :
  forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (a : Scalar), Scalar), forall (sub : forall (a : Scalar), forall (b : Scalar), Scalar), forall (mul : forall (a : Scalar), forall (b : Scalar), Scalar), forall (le_rel : forall (a : Scalar), forall (b : Scalar), Prop), forall (X : Sort v), forall (xzero : X), forall (xadd : forall (x : X), forall (y : X), X), forall (xneg : forall (x : X), X), forall (xsmul : forall (a : Scalar), forall (x : X), X), forall (xnorm : forall (x : X), Scalar), forall (Y : Sort w), forall (yzero : Y), forall (yadd : forall (x : Y), forall (y : Y), Y), forall (yneg : forall (y : Y), Y), forall (ysmul : forall (a : Scalar), forall (y : Y), Y), forall (ynorm : forall (y : Y), Scalar), forall (Z : Sort z), forall (zzero : Z), forall (zadd : forall (x : Z), forall (y : Z), Z), forall (zneg : forall (z : Z), Z), forall (zsmul : forall (a : Scalar), forall (z : Z), Z), forall (znorm : forall (z : Z), Scalar), forall (XY : Sort p), forall (xyzero : XY), forall (xyadd : forall (x : XY), forall (y : XY), XY), forall (xyneg : forall (x : XY), XY), forall (xysmul : forall (a : Scalar), forall (x : XY), XY), forall (xynorm : forall (x : XY), Scalar), forall (pairXY : forall (x : X), forall (y : Y), XY), forall (fstXY : forall (point : XY), X), forall (sndXY : forall (point : XY), Y), forall (XZ : Sort q), forall (xzzero : XZ), forall (xzadd : forall (x : XZ), forall (y : XZ), XZ), forall (xzneg : forall (x : XZ), XZ), forall (xzsmul : forall (a : Scalar), forall (x : XZ), XZ), forall (xznorm : forall (x : XZ), Scalar), forall (pairXZ : forall (x : X), forall (z : Z), XZ), forall (fstXZ : forall (point : XZ), X), forall (sndXZ : forall (point : XZ), Z), forall (F : forall (point : XY), Z), forall (base_x : X), forall (base_y : Y), forall (dFx : forall (h : X), Z), forall (dFy : forall (h : Y), Z), forall (dFy_inv : forall (z : Z), Y), forall (dy_op_norm : Scalar), forall (dy_inv_op_norm : Scalar), forall (phi_op_norm : Scalar), forall (phi_inv_op_norm : Scalar), forall (dy_iso : @LinearIsoArgs.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm dFy dFy_inv dy_op_norm dy_inv_op_norm), Prop :=
  fun Scalar => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun le_rel => fun X => fun xzero => fun xadd => fun xneg => fun xsmul => fun xnorm => fun Y => fun yzero => fun yadd => fun yneg => fun ysmul => fun ynorm => fun Z => fun zzero => fun zadd => fun zneg => fun zsmul => fun znorm => fun XY => fun xyzero => fun xyadd => fun xyneg => fun xysmul => fun xynorm => fun pairXY => fun fstXY => fun sndXY => fun XZ => fun xzzero => fun xzadd => fun xzneg => fun xzsmul => fun xznorm => fun pairXZ => fun fstXZ => fun sndXZ => fun F => fun base_x => fun base_y => fun dFx => fun dFy => fun dFy_inv => fun dy_op_norm => fun dy_inv_op_norm => fun phi_op_norm => fun phi_inv_op_norm => fun dy_iso => forall (P : Prop), forall (mk : forall (dy_iso_law : @LinearIsoArgs.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm dFy dFy_inv dy_op_norm dy_inv_op_norm), forall (block_args_law : @BlockTriangularIsoArgs.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv dy_op_norm dy_inv_op_norm dy_iso), forall (phi_linear_iso_law : @LinearIsoArgs.{u,p,q} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm XZ xzzero xzadd xzneg xzsmul xznorm (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv) (@BlockTriangularInverse.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv) phi_op_norm phi_inv_op_norm), P), P

theorem implicit_phi_coord_def.{p,q,u,v,w,z} :
  forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (a : Scalar), Scalar), forall (sub : forall (a : Scalar), forall (b : Scalar), Scalar), forall (mul : forall (a : Scalar), forall (b : Scalar), Scalar), forall (le_rel : forall (a : Scalar), forall (b : Scalar), Prop), forall (X : Sort v), forall (xzero : X), forall (xadd : forall (x : X), forall (y : X), X), forall (xneg : forall (x : X), X), forall (xsmul : forall (a : Scalar), forall (x : X), X), forall (xnorm : forall (x : X), Scalar), forall (Y : Sort w), forall (yzero : Y), forall (yadd : forall (x : Y), forall (y : Y), Y), forall (yneg : forall (y : Y), Y), forall (ysmul : forall (a : Scalar), forall (y : Y), Y), forall (ynorm : forall (y : Y), Scalar), forall (Z : Sort z), forall (zzero : Z), forall (zadd : forall (x : Z), forall (y : Z), Z), forall (zneg : forall (z : Z), Z), forall (zsmul : forall (a : Scalar), forall (z : Z), Z), forall (znorm : forall (z : Z), Scalar), forall (XY : Sort p), forall (xyzero : XY), forall (xyadd : forall (x : XY), forall (y : XY), XY), forall (xyneg : forall (x : XY), XY), forall (xysmul : forall (a : Scalar), forall (x : XY), XY), forall (xynorm : forall (x : XY), Scalar), forall (pairXY : forall (x : X), forall (y : Y), XY), forall (fstXY : forall (point : XY), X), forall (sndXY : forall (point : XY), Y), forall (XZ : Sort q), forall (xzzero : XZ), forall (xzadd : forall (x : XZ), forall (y : XZ), XZ), forall (xzneg : forall (x : XZ), XZ), forall (xzsmul : forall (a : Scalar), forall (x : XZ), XZ), forall (xznorm : forall (x : XZ), Scalar), forall (pairXZ : forall (x : X), forall (z : Z), XZ), forall (fstXZ : forall (point : XZ), X), forall (sndXZ : forall (point : XZ), Z), forall (F : forall (point : XY), Z), forall (base_x : X), forall (base_y : Y), forall (x : X), forall (y : Y), @Eq.{q} XZ (@ImplicitPhiCoord.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y x y) (pairXZ x (F (pairXY x y))) :=
  fun Scalar => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun le_rel => fun X => fun xzero => fun xadd => fun xneg => fun xsmul => fun xnorm => fun Y => fun yzero => fun yadd => fun yneg => fun ysmul => fun ynorm => fun Z => fun zzero => fun zadd => fun zneg => fun zsmul => fun znorm => fun XY => fun xyzero => fun xyadd => fun xyneg => fun xysmul => fun xynorm => fun pairXY => fun fstXY => fun sndXY => fun XZ => fun xzzero => fun xzadd => fun xzneg => fun xzsmul => fun xznorm => fun pairXZ => fun fstXZ => fun sndXZ => fun F => fun base_x => fun base_y => fun x => fun y => @Eq.refl.{q} XZ (@ImplicitPhiCoord.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y x y)

theorem implicit_phi_def.{p,q,u,v,w,z} :
  forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (a : Scalar), Scalar), forall (sub : forall (a : Scalar), forall (b : Scalar), Scalar), forall (mul : forall (a : Scalar), forall (b : Scalar), Scalar), forall (le_rel : forall (a : Scalar), forall (b : Scalar), Prop), forall (X : Sort v), forall (xzero : X), forall (xadd : forall (x : X), forall (y : X), X), forall (xneg : forall (x : X), X), forall (xsmul : forall (a : Scalar), forall (x : X), X), forall (xnorm : forall (x : X), Scalar), forall (Y : Sort w), forall (yzero : Y), forall (yadd : forall (x : Y), forall (y : Y), Y), forall (yneg : forall (y : Y), Y), forall (ysmul : forall (a : Scalar), forall (y : Y), Y), forall (ynorm : forall (y : Y), Scalar), forall (Z : Sort z), forall (zzero : Z), forall (zadd : forall (x : Z), forall (y : Z), Z), forall (zneg : forall (z : Z), Z), forall (zsmul : forall (a : Scalar), forall (z : Z), Z), forall (znorm : forall (z : Z), Scalar), forall (XY : Sort p), forall (xyzero : XY), forall (xyadd : forall (x : XY), forall (y : XY), XY), forall (xyneg : forall (x : XY), XY), forall (xysmul : forall (a : Scalar), forall (x : XY), XY), forall (xynorm : forall (x : XY), Scalar), forall (pairXY : forall (x : X), forall (y : Y), XY), forall (fstXY : forall (point : XY), X), forall (sndXY : forall (point : XY), Y), forall (XZ : Sort q), forall (xzzero : XZ), forall (xzadd : forall (x : XZ), forall (y : XZ), XZ), forall (xzneg : forall (x : XZ), XZ), forall (xzsmul : forall (a : Scalar), forall (x : XZ), XZ), forall (xznorm : forall (x : XZ), Scalar), forall (pairXZ : forall (x : X), forall (z : Z), XZ), forall (fstXZ : forall (point : XZ), X), forall (sndXZ : forall (point : XZ), Z), forall (F : forall (point : XY), Z), forall (base_x : X), forall (base_y : Y), forall (point : XY), @Eq.{q} XZ (@ImplicitPhi.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y point) (pairXZ (fstXY point) (F (pairXY (fstXY point) (sndXY point)))) :=
  fun Scalar => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun le_rel => fun X => fun xzero => fun xadd => fun xneg => fun xsmul => fun xnorm => fun Y => fun yzero => fun yadd => fun yneg => fun ysmul => fun ynorm => fun Z => fun zzero => fun zadd => fun zneg => fun zsmul => fun znorm => fun XY => fun xyzero => fun xyadd => fun xyneg => fun xysmul => fun xynorm => fun pairXY => fun fstXY => fun sndXY => fun XZ => fun xzzero => fun xzadd => fun xzneg => fun xzsmul => fun xznorm => fun pairXZ => fun fstXZ => fun sndXZ => fun F => fun base_x => fun base_y => fun point => @Eq.refl.{q} XZ (@ImplicitPhi.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y point)

theorem implicit_phi_coord_base_value_from_zero.{p,q,u,v,w,z} :
  forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (a : Scalar), Scalar), forall (sub : forall (a : Scalar), forall (b : Scalar), Scalar), forall (mul : forall (a : Scalar), forall (b : Scalar), Scalar), forall (le_rel : forall (a : Scalar), forall (b : Scalar), Prop), forall (X : Sort v), forall (xzero : X), forall (xadd : forall (x : X), forall (y : X), X), forall (xneg : forall (x : X), X), forall (xsmul : forall (a : Scalar), forall (x : X), X), forall (xnorm : forall (x : X), Scalar), forall (Y : Sort w), forall (yzero : Y), forall (yadd : forall (x : Y), forall (y : Y), Y), forall (yneg : forall (y : Y), Y), forall (ysmul : forall (a : Scalar), forall (y : Y), Y), forall (ynorm : forall (y : Y), Scalar), forall (Z : Sort z), forall (zzero : Z), forall (zadd : forall (x : Z), forall (y : Z), Z), forall (zneg : forall (z : Z), Z), forall (zsmul : forall (a : Scalar), forall (z : Z), Z), forall (znorm : forall (z : Z), Scalar), forall (XY : Sort p), forall (xyzero : XY), forall (xyadd : forall (x : XY), forall (y : XY), XY), forall (xyneg : forall (x : XY), XY), forall (xysmul : forall (a : Scalar), forall (x : XY), XY), forall (xynorm : forall (x : XY), Scalar), forall (pairXY : forall (x : X), forall (y : Y), XY), forall (fstXY : forall (point : XY), X), forall (sndXY : forall (point : XY), Y), forall (XZ : Sort q), forall (xzzero : XZ), forall (xzadd : forall (x : XZ), forall (y : XZ), XZ), forall (xzneg : forall (x : XZ), XZ), forall (xzsmul : forall (a : Scalar), forall (x : XZ), XZ), forall (xznorm : forall (x : XZ), Scalar), forall (pairXZ : forall (x : X), forall (z : Z), XZ), forall (fstXZ : forall (point : XZ), X), forall (sndXZ : forall (point : XZ), Z), forall (F : forall (point : XY), Z), forall (base_x : X), forall (base_y : Y), forall (zero_law : @Eq.{z} Z (F (pairXY base_x base_y)) zzero), @Eq.{q} XZ (@ImplicitPhiCoord.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y base_x base_y) (pairXZ base_x zzero) :=
  fun Scalar => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun le_rel => fun X => fun xzero => fun xadd => fun xneg => fun xsmul => fun xnorm => fun Y => fun yzero => fun yadd => fun yneg => fun ysmul => fun ynorm => fun Z => fun zzero => fun zadd => fun zneg => fun zsmul => fun znorm => fun XY => fun xyzero => fun xyadd => fun xyneg => fun xysmul => fun xynorm => fun pairXY => fun fstXY => fun sndXY => fun XZ => fun xzzero => fun xzadd => fun xzneg => fun xzsmul => fun xznorm => fun pairXZ => fun fstXZ => fun sndXZ => fun F => fun base_x => fun base_y => fun zero_law => @eq_congr_arg.{z,q} Z XZ (fun (value : Z) => pairXZ base_x value) (F (pairXY base_x base_y)) zzero zero_law

theorem implicit_phi_derivative_map_def.{p,q,u,v,w,z} :
  forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (a : Scalar), Scalar), forall (sub : forall (a : Scalar), forall (b : Scalar), Scalar), forall (mul : forall (a : Scalar), forall (b : Scalar), Scalar), forall (le_rel : forall (a : Scalar), forall (b : Scalar), Prop), forall (X : Sort v), forall (xzero : X), forall (xadd : forall (x : X), forall (y : X), X), forall (xneg : forall (x : X), X), forall (xsmul : forall (a : Scalar), forall (x : X), X), forall (xnorm : forall (x : X), Scalar), forall (Y : Sort w), forall (yzero : Y), forall (yadd : forall (x : Y), forall (y : Y), Y), forall (yneg : forall (y : Y), Y), forall (ysmul : forall (a : Scalar), forall (y : Y), Y), forall (ynorm : forall (y : Y), Scalar), forall (Z : Sort z), forall (zzero : Z), forall (zadd : forall (x : Z), forall (y : Z), Z), forall (zneg : forall (z : Z), Z), forall (zsmul : forall (a : Scalar), forall (z : Z), Z), forall (znorm : forall (z : Z), Scalar), forall (XY : Sort p), forall (xyzero : XY), forall (xyadd : forall (x : XY), forall (y : XY), XY), forall (xyneg : forall (x : XY), XY), forall (xysmul : forall (a : Scalar), forall (x : XY), XY), forall (xynorm : forall (x : XY), Scalar), forall (pairXY : forall (x : X), forall (y : Y), XY), forall (fstXY : forall (point : XY), X), forall (sndXY : forall (point : XY), Y), forall (XZ : Sort q), forall (xzzero : XZ), forall (xzadd : forall (x : XZ), forall (y : XZ), XZ), forall (xzneg : forall (x : XZ), XZ), forall (xzsmul : forall (a : Scalar), forall (x : XZ), XZ), forall (xznorm : forall (x : XZ), Scalar), forall (pairXZ : forall (x : X), forall (z : Z), XZ), forall (fstXZ : forall (point : XZ), X), forall (sndXZ : forall (point : XZ), Z), forall (F : forall (point : XY), Z), forall (base_x : X), forall (base_y : Y), forall (dFx : forall (h : X), Z), forall (dFy : forall (h : Y), Z), forall (dFy_inv : forall (z : Z), Y), forall (h : XY), @Eq.{q} XZ (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv h) (pairXZ (fstXY h) (zadd (dFx (fstXY h)) (dFy (sndXY h)))) :=
  fun Scalar => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun le_rel => fun X => fun xzero => fun xadd => fun xneg => fun xsmul => fun xnorm => fun Y => fun yzero => fun yadd => fun yneg => fun ysmul => fun ynorm => fun Z => fun zzero => fun zadd => fun zneg => fun zsmul => fun znorm => fun XY => fun xyzero => fun xyadd => fun xyneg => fun xysmul => fun xynorm => fun pairXY => fun fstXY => fun sndXY => fun XZ => fun xzzero => fun xzadd => fun xzneg => fun xzsmul => fun xznorm => fun pairXZ => fun fstXZ => fun sndXZ => fun F => fun base_x => fun base_y => fun dFx => fun dFy => fun dFy_inv => fun h => @Eq.refl.{q} XZ (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv h)

theorem implicit_phi_full_derivative_from_args.{p,q,u,v,w,z} :
  forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (a : Scalar), Scalar), forall (sub : forall (a : Scalar), forall (b : Scalar), Scalar), forall (mul : forall (a : Scalar), forall (b : Scalar), Scalar), forall (le_rel : forall (a : Scalar), forall (b : Scalar), Prop), forall (X : Sort v), forall (xzero : X), forall (xadd : forall (x : X), forall (y : X), X), forall (xneg : forall (x : X), X), forall (xsmul : forall (a : Scalar), forall (x : X), X), forall (xnorm : forall (x : X), Scalar), forall (Y : Sort w), forall (yzero : Y), forall (yadd : forall (x : Y), forall (y : Y), Y), forall (yneg : forall (y : Y), Y), forall (ysmul : forall (a : Scalar), forall (y : Y), Y), forall (ynorm : forall (y : Y), Scalar), forall (Z : Sort z), forall (zzero : Z), forall (zadd : forall (x : Z), forall (y : Z), Z), forall (zneg : forall (z : Z), Z), forall (zsmul : forall (a : Scalar), forall (z : Z), Z), forall (znorm : forall (z : Z), Scalar), forall (XY : Sort p), forall (xyzero : XY), forall (xyadd : forall (x : XY), forall (y : XY), XY), forall (xyneg : forall (x : XY), XY), forall (xysmul : forall (a : Scalar), forall (x : XY), XY), forall (xynorm : forall (x : XY), Scalar), forall (pairXY : forall (x : X), forall (y : Y), XY), forall (fstXY : forall (point : XY), X), forall (sndXY : forall (point : XY), Y), forall (XZ : Sort q), forall (xzzero : XZ), forall (xzadd : forall (x : XZ), forall (y : XZ), XZ), forall (xzneg : forall (x : XZ), XZ), forall (xzsmul : forall (a : Scalar), forall (x : XZ), XZ), forall (xznorm : forall (x : XZ), Scalar), forall (pairXZ : forall (x : X), forall (z : Z), XZ), forall (fstXZ : forall (point : XZ), X), forall (sndXZ : forall (point : XZ), Z), forall (F : forall (point : XY), Z), forall (base_x : X), forall (base_y : Y), forall (dF : forall (h : XY), Z), forall (dFx : forall (h : X), Z), forall (dFy : forall (h : Y), Z), forall (dFy_inv : forall (z : Z), Y), forall (F_bound : Scalar), forall (F_remainder : forall (r : Z), Prop), forall (partial_x_bound : Scalar), forall (partial_x_remainder : forall (r : Z), Prop), forall (partial_y_bound : Scalar), forall (partial_y_remainder : forall (r : Z), Prop), forall (phi_bound : Scalar), forall (phi_remainder : forall (r : XZ), Prop), forall (args : @ImplicitPhiDerivativeArgs.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dF dFx dFy dFy_inv F_bound F_remainder partial_x_bound partial_x_remainder partial_y_bound partial_y_remainder phi_bound phi_remainder), @FrechetDerivativeAt.{u,p,z} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm Z zzero zadd zneg zsmul znorm F (pairXY base_x base_y) dF F_bound F_remainder :=
  fun Scalar => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun le_rel => fun X => fun xzero => fun xadd => fun xneg => fun xsmul => fun xnorm => fun Y => fun yzero => fun yadd => fun yneg => fun ysmul => fun ynorm => fun Z => fun zzero => fun zadd => fun zneg => fun zsmul => fun znorm => fun XY => fun xyzero => fun xyadd => fun xyneg => fun xysmul => fun xynorm => fun pairXY => fun fstXY => fun sndXY => fun XZ => fun xzzero => fun xzadd => fun xzneg => fun xzsmul => fun xznorm => fun pairXZ => fun fstXZ => fun sndXZ => fun F => fun base_x => fun base_y => fun dF => fun dFx => fun dFy => fun dFy_inv => fun F_bound => fun F_remainder => fun partial_x_bound => fun partial_x_remainder => fun partial_y_bound => fun partial_y_remainder => fun phi_bound => fun phi_remainder => fun args => args (@FrechetDerivativeAt.{u,p,z} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm Z zzero zadd zneg zsmul znorm F (pairXY base_x base_y) dF F_bound F_remainder) (fun (F_at_arg : @FrechetDerivativeAt.{u,p,z} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm Z zzero zadd zneg zsmul znorm F (pairXY base_x base_y) dF F_bound F_remainder) => fun (partial_x_arg : @FrechetDerivativeAt.{u,v,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Z zzero zadd zneg zsmul znorm (@PartialXMap.{p,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY F base_y) base_x dFx partial_x_bound partial_x_remainder) => fun (partial_y_arg : @FrechetDerivativeAt.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm (@PartialYMap.{p,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY F base_x) base_y dFy partial_y_bound partial_y_remainder) => fun (phi_at_arg : @FrechetDerivativeAt.{u,p,q} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm XZ xzzero xzadd xzneg xzsmul xznorm (@ImplicitPhi.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y) (pairXY base_x base_y) (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv) phi_bound phi_remainder) => F_at_arg)

theorem implicit_phi_partial_x_from_args.{p,q,u,v,w,z} :
  forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (a : Scalar), Scalar), forall (sub : forall (a : Scalar), forall (b : Scalar), Scalar), forall (mul : forall (a : Scalar), forall (b : Scalar), Scalar), forall (le_rel : forall (a : Scalar), forall (b : Scalar), Prop), forall (X : Sort v), forall (xzero : X), forall (xadd : forall (x : X), forall (y : X), X), forall (xneg : forall (x : X), X), forall (xsmul : forall (a : Scalar), forall (x : X), X), forall (xnorm : forall (x : X), Scalar), forall (Y : Sort w), forall (yzero : Y), forall (yadd : forall (x : Y), forall (y : Y), Y), forall (yneg : forall (y : Y), Y), forall (ysmul : forall (a : Scalar), forall (y : Y), Y), forall (ynorm : forall (y : Y), Scalar), forall (Z : Sort z), forall (zzero : Z), forall (zadd : forall (x : Z), forall (y : Z), Z), forall (zneg : forall (z : Z), Z), forall (zsmul : forall (a : Scalar), forall (z : Z), Z), forall (znorm : forall (z : Z), Scalar), forall (XY : Sort p), forall (xyzero : XY), forall (xyadd : forall (x : XY), forall (y : XY), XY), forall (xyneg : forall (x : XY), XY), forall (xysmul : forall (a : Scalar), forall (x : XY), XY), forall (xynorm : forall (x : XY), Scalar), forall (pairXY : forall (x : X), forall (y : Y), XY), forall (fstXY : forall (point : XY), X), forall (sndXY : forall (point : XY), Y), forall (XZ : Sort q), forall (xzzero : XZ), forall (xzadd : forall (x : XZ), forall (y : XZ), XZ), forall (xzneg : forall (x : XZ), XZ), forall (xzsmul : forall (a : Scalar), forall (x : XZ), XZ), forall (xznorm : forall (x : XZ), Scalar), forall (pairXZ : forall (x : X), forall (z : Z), XZ), forall (fstXZ : forall (point : XZ), X), forall (sndXZ : forall (point : XZ), Z), forall (F : forall (point : XY), Z), forall (base_x : X), forall (base_y : Y), forall (dF : forall (h : XY), Z), forall (dFx : forall (h : X), Z), forall (dFy : forall (h : Y), Z), forall (dFy_inv : forall (z : Z), Y), forall (F_bound : Scalar), forall (F_remainder : forall (r : Z), Prop), forall (partial_x_bound : Scalar), forall (partial_x_remainder : forall (r : Z), Prop), forall (partial_y_bound : Scalar), forall (partial_y_remainder : forall (r : Z), Prop), forall (phi_bound : Scalar), forall (phi_remainder : forall (r : XZ), Prop), forall (args : @ImplicitPhiDerivativeArgs.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dF dFx dFy dFy_inv F_bound F_remainder partial_x_bound partial_x_remainder partial_y_bound partial_y_remainder phi_bound phi_remainder), @FrechetDerivativeAt.{u,v,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Z zzero zadd zneg zsmul znorm (@PartialXMap.{p,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY F base_y) base_x dFx partial_x_bound partial_x_remainder :=
  fun Scalar => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun le_rel => fun X => fun xzero => fun xadd => fun xneg => fun xsmul => fun xnorm => fun Y => fun yzero => fun yadd => fun yneg => fun ysmul => fun ynorm => fun Z => fun zzero => fun zadd => fun zneg => fun zsmul => fun znorm => fun XY => fun xyzero => fun xyadd => fun xyneg => fun xysmul => fun xynorm => fun pairXY => fun fstXY => fun sndXY => fun XZ => fun xzzero => fun xzadd => fun xzneg => fun xzsmul => fun xznorm => fun pairXZ => fun fstXZ => fun sndXZ => fun F => fun base_x => fun base_y => fun dF => fun dFx => fun dFy => fun dFy_inv => fun F_bound => fun F_remainder => fun partial_x_bound => fun partial_x_remainder => fun partial_y_bound => fun partial_y_remainder => fun phi_bound => fun phi_remainder => fun args => args (@FrechetDerivativeAt.{u,v,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Z zzero zadd zneg zsmul znorm (@PartialXMap.{p,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY F base_y) base_x dFx partial_x_bound partial_x_remainder) (fun (F_at_arg : @FrechetDerivativeAt.{u,p,z} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm Z zzero zadd zneg zsmul znorm F (pairXY base_x base_y) dF F_bound F_remainder) => fun (partial_x_arg : @FrechetDerivativeAt.{u,v,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Z zzero zadd zneg zsmul znorm (@PartialXMap.{p,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY F base_y) base_x dFx partial_x_bound partial_x_remainder) => fun (partial_y_arg : @FrechetDerivativeAt.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm (@PartialYMap.{p,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY F base_x) base_y dFy partial_y_bound partial_y_remainder) => fun (phi_at_arg : @FrechetDerivativeAt.{u,p,q} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm XZ xzzero xzadd xzneg xzsmul xznorm (@ImplicitPhi.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y) (pairXY base_x base_y) (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv) phi_bound phi_remainder) => partial_x_arg)

theorem implicit_phi_partial_y_from_args.{p,q,u,v,w,z} :
  forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (a : Scalar), Scalar), forall (sub : forall (a : Scalar), forall (b : Scalar), Scalar), forall (mul : forall (a : Scalar), forall (b : Scalar), Scalar), forall (le_rel : forall (a : Scalar), forall (b : Scalar), Prop), forall (X : Sort v), forall (xzero : X), forall (xadd : forall (x : X), forall (y : X), X), forall (xneg : forall (x : X), X), forall (xsmul : forall (a : Scalar), forall (x : X), X), forall (xnorm : forall (x : X), Scalar), forall (Y : Sort w), forall (yzero : Y), forall (yadd : forall (x : Y), forall (y : Y), Y), forall (yneg : forall (y : Y), Y), forall (ysmul : forall (a : Scalar), forall (y : Y), Y), forall (ynorm : forall (y : Y), Scalar), forall (Z : Sort z), forall (zzero : Z), forall (zadd : forall (x : Z), forall (y : Z), Z), forall (zneg : forall (z : Z), Z), forall (zsmul : forall (a : Scalar), forall (z : Z), Z), forall (znorm : forall (z : Z), Scalar), forall (XY : Sort p), forall (xyzero : XY), forall (xyadd : forall (x : XY), forall (y : XY), XY), forall (xyneg : forall (x : XY), XY), forall (xysmul : forall (a : Scalar), forall (x : XY), XY), forall (xynorm : forall (x : XY), Scalar), forall (pairXY : forall (x : X), forall (y : Y), XY), forall (fstXY : forall (point : XY), X), forall (sndXY : forall (point : XY), Y), forall (XZ : Sort q), forall (xzzero : XZ), forall (xzadd : forall (x : XZ), forall (y : XZ), XZ), forall (xzneg : forall (x : XZ), XZ), forall (xzsmul : forall (a : Scalar), forall (x : XZ), XZ), forall (xznorm : forall (x : XZ), Scalar), forall (pairXZ : forall (x : X), forall (z : Z), XZ), forall (fstXZ : forall (point : XZ), X), forall (sndXZ : forall (point : XZ), Z), forall (F : forall (point : XY), Z), forall (base_x : X), forall (base_y : Y), forall (dF : forall (h : XY), Z), forall (dFx : forall (h : X), Z), forall (dFy : forall (h : Y), Z), forall (dFy_inv : forall (z : Z), Y), forall (F_bound : Scalar), forall (F_remainder : forall (r : Z), Prop), forall (partial_x_bound : Scalar), forall (partial_x_remainder : forall (r : Z), Prop), forall (partial_y_bound : Scalar), forall (partial_y_remainder : forall (r : Z), Prop), forall (phi_bound : Scalar), forall (phi_remainder : forall (r : XZ), Prop), forall (args : @ImplicitPhiDerivativeArgs.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dF dFx dFy dFy_inv F_bound F_remainder partial_x_bound partial_x_remainder partial_y_bound partial_y_remainder phi_bound phi_remainder), @FrechetDerivativeAt.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm (@PartialYMap.{p,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY F base_x) base_y dFy partial_y_bound partial_y_remainder :=
  fun Scalar => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun le_rel => fun X => fun xzero => fun xadd => fun xneg => fun xsmul => fun xnorm => fun Y => fun yzero => fun yadd => fun yneg => fun ysmul => fun ynorm => fun Z => fun zzero => fun zadd => fun zneg => fun zsmul => fun znorm => fun XY => fun xyzero => fun xyadd => fun xyneg => fun xysmul => fun xynorm => fun pairXY => fun fstXY => fun sndXY => fun XZ => fun xzzero => fun xzadd => fun xzneg => fun xzsmul => fun xznorm => fun pairXZ => fun fstXZ => fun sndXZ => fun F => fun base_x => fun base_y => fun dF => fun dFx => fun dFy => fun dFy_inv => fun F_bound => fun F_remainder => fun partial_x_bound => fun partial_x_remainder => fun partial_y_bound => fun partial_y_remainder => fun phi_bound => fun phi_remainder => fun args => args (@FrechetDerivativeAt.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm (@PartialYMap.{p,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY F base_x) base_y dFy partial_y_bound partial_y_remainder) (fun (F_at_arg : @FrechetDerivativeAt.{u,p,z} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm Z zzero zadd zneg zsmul znorm F (pairXY base_x base_y) dF F_bound F_remainder) => fun (partial_x_arg : @FrechetDerivativeAt.{u,v,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Z zzero zadd zneg zsmul znorm (@PartialXMap.{p,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY F base_y) base_x dFx partial_x_bound partial_x_remainder) => fun (partial_y_arg : @FrechetDerivativeAt.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm (@PartialYMap.{p,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY F base_x) base_y dFy partial_y_bound partial_y_remainder) => fun (phi_at_arg : @FrechetDerivativeAt.{u,p,q} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm XZ xzzero xzadd xzneg xzsmul xznorm (@ImplicitPhi.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y) (pairXY base_x base_y) (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv) phi_bound phi_remainder) => partial_y_arg)

theorem implicit_phi_derivative_from_args.{p,q,u,v,w,z} :
  forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (a : Scalar), Scalar), forall (sub : forall (a : Scalar), forall (b : Scalar), Scalar), forall (mul : forall (a : Scalar), forall (b : Scalar), Scalar), forall (le_rel : forall (a : Scalar), forall (b : Scalar), Prop), forall (X : Sort v), forall (xzero : X), forall (xadd : forall (x : X), forall (y : X), X), forall (xneg : forall (x : X), X), forall (xsmul : forall (a : Scalar), forall (x : X), X), forall (xnorm : forall (x : X), Scalar), forall (Y : Sort w), forall (yzero : Y), forall (yadd : forall (x : Y), forall (y : Y), Y), forall (yneg : forall (y : Y), Y), forall (ysmul : forall (a : Scalar), forall (y : Y), Y), forall (ynorm : forall (y : Y), Scalar), forall (Z : Sort z), forall (zzero : Z), forall (zadd : forall (x : Z), forall (y : Z), Z), forall (zneg : forall (z : Z), Z), forall (zsmul : forall (a : Scalar), forall (z : Z), Z), forall (znorm : forall (z : Z), Scalar), forall (XY : Sort p), forall (xyzero : XY), forall (xyadd : forall (x : XY), forall (y : XY), XY), forall (xyneg : forall (x : XY), XY), forall (xysmul : forall (a : Scalar), forall (x : XY), XY), forall (xynorm : forall (x : XY), Scalar), forall (pairXY : forall (x : X), forall (y : Y), XY), forall (fstXY : forall (point : XY), X), forall (sndXY : forall (point : XY), Y), forall (XZ : Sort q), forall (xzzero : XZ), forall (xzadd : forall (x : XZ), forall (y : XZ), XZ), forall (xzneg : forall (x : XZ), XZ), forall (xzsmul : forall (a : Scalar), forall (x : XZ), XZ), forall (xznorm : forall (x : XZ), Scalar), forall (pairXZ : forall (x : X), forall (z : Z), XZ), forall (fstXZ : forall (point : XZ), X), forall (sndXZ : forall (point : XZ), Z), forall (F : forall (point : XY), Z), forall (base_x : X), forall (base_y : Y), forall (dF : forall (h : XY), Z), forall (dFx : forall (h : X), Z), forall (dFy : forall (h : Y), Z), forall (dFy_inv : forall (z : Z), Y), forall (F_bound : Scalar), forall (F_remainder : forall (r : Z), Prop), forall (partial_x_bound : Scalar), forall (partial_x_remainder : forall (r : Z), Prop), forall (partial_y_bound : Scalar), forall (partial_y_remainder : forall (r : Z), Prop), forall (phi_bound : Scalar), forall (phi_remainder : forall (r : XZ), Prop), forall (args : @ImplicitPhiDerivativeArgs.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dF dFx dFy dFy_inv F_bound F_remainder partial_x_bound partial_x_remainder partial_y_bound partial_y_remainder phi_bound phi_remainder), @FrechetDerivativeAt.{u,p,q} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm XZ xzzero xzadd xzneg xzsmul xznorm (@ImplicitPhi.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y) (pairXY base_x base_y) (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv) phi_bound phi_remainder :=
  fun Scalar => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun le_rel => fun X => fun xzero => fun xadd => fun xneg => fun xsmul => fun xnorm => fun Y => fun yzero => fun yadd => fun yneg => fun ysmul => fun ynorm => fun Z => fun zzero => fun zadd => fun zneg => fun zsmul => fun znorm => fun XY => fun xyzero => fun xyadd => fun xyneg => fun xysmul => fun xynorm => fun pairXY => fun fstXY => fun sndXY => fun XZ => fun xzzero => fun xzadd => fun xzneg => fun xzsmul => fun xznorm => fun pairXZ => fun fstXZ => fun sndXZ => fun F => fun base_x => fun base_y => fun dF => fun dFx => fun dFy => fun dFy_inv => fun F_bound => fun F_remainder => fun partial_x_bound => fun partial_x_remainder => fun partial_y_bound => fun partial_y_remainder => fun phi_bound => fun phi_remainder => fun args => args (@FrechetDerivativeAt.{u,p,q} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm XZ xzzero xzadd xzneg xzsmul xznorm (@ImplicitPhi.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y) (pairXY base_x base_y) (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv) phi_bound phi_remainder) (fun (F_at_arg : @FrechetDerivativeAt.{u,p,z} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm Z zzero zadd zneg zsmul znorm F (pairXY base_x base_y) dF F_bound F_remainder) => fun (partial_x_arg : @FrechetDerivativeAt.{u,v,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Z zzero zadd zneg zsmul znorm (@PartialXMap.{p,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY F base_y) base_x dFx partial_x_bound partial_x_remainder) => fun (partial_y_arg : @FrechetDerivativeAt.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm (@PartialYMap.{p,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY F base_x) base_y dFy partial_y_bound partial_y_remainder) => fun (phi_at_arg : @FrechetDerivativeAt.{u,p,q} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm XZ xzzero xzadd xzneg xzsmul xznorm (@ImplicitPhi.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y) (pairXY base_x base_y) (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv) phi_bound phi_remainder) => phi_at_arg)

theorem implicit_phi_dy_iso_from_args.{p,q,u,v,w,z} :
  forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (a : Scalar), Scalar), forall (sub : forall (a : Scalar), forall (b : Scalar), Scalar), forall (mul : forall (a : Scalar), forall (b : Scalar), Scalar), forall (le_rel : forall (a : Scalar), forall (b : Scalar), Prop), forall (X : Sort v), forall (xzero : X), forall (xadd : forall (x : X), forall (y : X), X), forall (xneg : forall (x : X), X), forall (xsmul : forall (a : Scalar), forall (x : X), X), forall (xnorm : forall (x : X), Scalar), forall (Y : Sort w), forall (yzero : Y), forall (yadd : forall (x : Y), forall (y : Y), Y), forall (yneg : forall (y : Y), Y), forall (ysmul : forall (a : Scalar), forall (y : Y), Y), forall (ynorm : forall (y : Y), Scalar), forall (Z : Sort z), forall (zzero : Z), forall (zadd : forall (x : Z), forall (y : Z), Z), forall (zneg : forall (z : Z), Z), forall (zsmul : forall (a : Scalar), forall (z : Z), Z), forall (znorm : forall (z : Z), Scalar), forall (XY : Sort p), forall (xyzero : XY), forall (xyadd : forall (x : XY), forall (y : XY), XY), forall (xyneg : forall (x : XY), XY), forall (xysmul : forall (a : Scalar), forall (x : XY), XY), forall (xynorm : forall (x : XY), Scalar), forall (pairXY : forall (x : X), forall (y : Y), XY), forall (fstXY : forall (point : XY), X), forall (sndXY : forall (point : XY), Y), forall (XZ : Sort q), forall (xzzero : XZ), forall (xzadd : forall (x : XZ), forall (y : XZ), XZ), forall (xzneg : forall (x : XZ), XZ), forall (xzsmul : forall (a : Scalar), forall (x : XZ), XZ), forall (xznorm : forall (x : XZ), Scalar), forall (pairXZ : forall (x : X), forall (z : Z), XZ), forall (fstXZ : forall (point : XZ), X), forall (sndXZ : forall (point : XZ), Z), forall (F : forall (point : XY), Z), forall (base_x : X), forall (base_y : Y), forall (dFx : forall (h : X), Z), forall (dFy : forall (h : Y), Z), forall (dFy_inv : forall (z : Z), Y), forall (dy_op_norm : Scalar), forall (dy_inv_op_norm : Scalar), forall (phi_op_norm : Scalar), forall (phi_inv_op_norm : Scalar), forall (dy_iso : @LinearIsoArgs.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm dFy dFy_inv dy_op_norm dy_inv_op_norm), forall (args : @ImplicitPhiIsoArgs.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv dy_op_norm dy_inv_op_norm phi_op_norm phi_inv_op_norm dy_iso), @LinearIsoArgs.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm dFy dFy_inv dy_op_norm dy_inv_op_norm :=
  fun Scalar => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun le_rel => fun X => fun xzero => fun xadd => fun xneg => fun xsmul => fun xnorm => fun Y => fun yzero => fun yadd => fun yneg => fun ysmul => fun ynorm => fun Z => fun zzero => fun zadd => fun zneg => fun zsmul => fun znorm => fun XY => fun xyzero => fun xyadd => fun xyneg => fun xysmul => fun xynorm => fun pairXY => fun fstXY => fun sndXY => fun XZ => fun xzzero => fun xzadd => fun xzneg => fun xzsmul => fun xznorm => fun pairXZ => fun fstXZ => fun sndXZ => fun F => fun base_x => fun base_y => fun dFx => fun dFy => fun dFy_inv => fun dy_op_norm => fun dy_inv_op_norm => fun phi_op_norm => fun phi_inv_op_norm => fun dy_iso => fun args => args (@LinearIsoArgs.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm dFy dFy_inv dy_op_norm dy_inv_op_norm) (fun (dy_iso_arg : @LinearIsoArgs.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm dFy dFy_inv dy_op_norm dy_inv_op_norm) => fun (block_args_arg : @BlockTriangularIsoArgs.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv dy_op_norm dy_inv_op_norm dy_iso) => fun (phi_linear_iso_arg : @LinearIsoArgs.{u,p,q} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm XZ xzzero xzadd xzneg xzsmul xznorm (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv) (@BlockTriangularInverse.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv) phi_op_norm phi_inv_op_norm) => dy_iso_arg)

theorem implicit_phi_block_triangular_args_from_args.{p,q,u,v,w,z} :
  forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (a : Scalar), Scalar), forall (sub : forall (a : Scalar), forall (b : Scalar), Scalar), forall (mul : forall (a : Scalar), forall (b : Scalar), Scalar), forall (le_rel : forall (a : Scalar), forall (b : Scalar), Prop), forall (X : Sort v), forall (xzero : X), forall (xadd : forall (x : X), forall (y : X), X), forall (xneg : forall (x : X), X), forall (xsmul : forall (a : Scalar), forall (x : X), X), forall (xnorm : forall (x : X), Scalar), forall (Y : Sort w), forall (yzero : Y), forall (yadd : forall (x : Y), forall (y : Y), Y), forall (yneg : forall (y : Y), Y), forall (ysmul : forall (a : Scalar), forall (y : Y), Y), forall (ynorm : forall (y : Y), Scalar), forall (Z : Sort z), forall (zzero : Z), forall (zadd : forall (x : Z), forall (y : Z), Z), forall (zneg : forall (z : Z), Z), forall (zsmul : forall (a : Scalar), forall (z : Z), Z), forall (znorm : forall (z : Z), Scalar), forall (XY : Sort p), forall (xyzero : XY), forall (xyadd : forall (x : XY), forall (y : XY), XY), forall (xyneg : forall (x : XY), XY), forall (xysmul : forall (a : Scalar), forall (x : XY), XY), forall (xynorm : forall (x : XY), Scalar), forall (pairXY : forall (x : X), forall (y : Y), XY), forall (fstXY : forall (point : XY), X), forall (sndXY : forall (point : XY), Y), forall (XZ : Sort q), forall (xzzero : XZ), forall (xzadd : forall (x : XZ), forall (y : XZ), XZ), forall (xzneg : forall (x : XZ), XZ), forall (xzsmul : forall (a : Scalar), forall (x : XZ), XZ), forall (xznorm : forall (x : XZ), Scalar), forall (pairXZ : forall (x : X), forall (z : Z), XZ), forall (fstXZ : forall (point : XZ), X), forall (sndXZ : forall (point : XZ), Z), forall (F : forall (point : XY), Z), forall (base_x : X), forall (base_y : Y), forall (dFx : forall (h : X), Z), forall (dFy : forall (h : Y), Z), forall (dFy_inv : forall (z : Z), Y), forall (dy_op_norm : Scalar), forall (dy_inv_op_norm : Scalar), forall (phi_op_norm : Scalar), forall (phi_inv_op_norm : Scalar), forall (dy_iso : @LinearIsoArgs.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm dFy dFy_inv dy_op_norm dy_inv_op_norm), forall (args : @ImplicitPhiIsoArgs.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv dy_op_norm dy_inv_op_norm phi_op_norm phi_inv_op_norm dy_iso), @BlockTriangularIsoArgs.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv dy_op_norm dy_inv_op_norm dy_iso :=
  fun Scalar => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun le_rel => fun X => fun xzero => fun xadd => fun xneg => fun xsmul => fun xnorm => fun Y => fun yzero => fun yadd => fun yneg => fun ysmul => fun ynorm => fun Z => fun zzero => fun zadd => fun zneg => fun zsmul => fun znorm => fun XY => fun xyzero => fun xyadd => fun xyneg => fun xysmul => fun xynorm => fun pairXY => fun fstXY => fun sndXY => fun XZ => fun xzzero => fun xzadd => fun xzneg => fun xzsmul => fun xznorm => fun pairXZ => fun fstXZ => fun sndXZ => fun F => fun base_x => fun base_y => fun dFx => fun dFy => fun dFy_inv => fun dy_op_norm => fun dy_inv_op_norm => fun phi_op_norm => fun phi_inv_op_norm => fun dy_iso => fun args => args (@BlockTriangularIsoArgs.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv dy_op_norm dy_inv_op_norm dy_iso) (fun (dy_iso_arg : @LinearIsoArgs.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm dFy dFy_inv dy_op_norm dy_inv_op_norm) => fun (block_args_arg : @BlockTriangularIsoArgs.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv dy_op_norm dy_inv_op_norm dy_iso) => fun (phi_linear_iso_arg : @LinearIsoArgs.{u,p,q} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm XZ xzzero xzadd xzneg xzsmul xznorm (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv) (@BlockTriangularInverse.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv) phi_op_norm phi_inv_op_norm) => block_args_arg)

theorem implicit_phi_linear_iso_from_args.{p,q,u,v,w,z} :
  forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (a : Scalar), Scalar), forall (sub : forall (a : Scalar), forall (b : Scalar), Scalar), forall (mul : forall (a : Scalar), forall (b : Scalar), Scalar), forall (le_rel : forall (a : Scalar), forall (b : Scalar), Prop), forall (X : Sort v), forall (xzero : X), forall (xadd : forall (x : X), forall (y : X), X), forall (xneg : forall (x : X), X), forall (xsmul : forall (a : Scalar), forall (x : X), X), forall (xnorm : forall (x : X), Scalar), forall (Y : Sort w), forall (yzero : Y), forall (yadd : forall (x : Y), forall (y : Y), Y), forall (yneg : forall (y : Y), Y), forall (ysmul : forall (a : Scalar), forall (y : Y), Y), forall (ynorm : forall (y : Y), Scalar), forall (Z : Sort z), forall (zzero : Z), forall (zadd : forall (x : Z), forall (y : Z), Z), forall (zneg : forall (z : Z), Z), forall (zsmul : forall (a : Scalar), forall (z : Z), Z), forall (znorm : forall (z : Z), Scalar), forall (XY : Sort p), forall (xyzero : XY), forall (xyadd : forall (x : XY), forall (y : XY), XY), forall (xyneg : forall (x : XY), XY), forall (xysmul : forall (a : Scalar), forall (x : XY), XY), forall (xynorm : forall (x : XY), Scalar), forall (pairXY : forall (x : X), forall (y : Y), XY), forall (fstXY : forall (point : XY), X), forall (sndXY : forall (point : XY), Y), forall (XZ : Sort q), forall (xzzero : XZ), forall (xzadd : forall (x : XZ), forall (y : XZ), XZ), forall (xzneg : forall (x : XZ), XZ), forall (xzsmul : forall (a : Scalar), forall (x : XZ), XZ), forall (xznorm : forall (x : XZ), Scalar), forall (pairXZ : forall (x : X), forall (z : Z), XZ), forall (fstXZ : forall (point : XZ), X), forall (sndXZ : forall (point : XZ), Z), forall (F : forall (point : XY), Z), forall (base_x : X), forall (base_y : Y), forall (dFx : forall (h : X), Z), forall (dFy : forall (h : Y), Z), forall (dFy_inv : forall (z : Z), Y), forall (dy_op_norm : Scalar), forall (dy_inv_op_norm : Scalar), forall (phi_op_norm : Scalar), forall (phi_inv_op_norm : Scalar), forall (dy_iso : @LinearIsoArgs.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm dFy dFy_inv dy_op_norm dy_inv_op_norm), forall (args : @ImplicitPhiIsoArgs.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv dy_op_norm dy_inv_op_norm phi_op_norm phi_inv_op_norm dy_iso), @LinearIsoArgs.{u,p,q} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm XZ xzzero xzadd xzneg xzsmul xznorm (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv) (@BlockTriangularInverse.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv) phi_op_norm phi_inv_op_norm :=
  fun Scalar => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun le_rel => fun X => fun xzero => fun xadd => fun xneg => fun xsmul => fun xnorm => fun Y => fun yzero => fun yadd => fun yneg => fun ysmul => fun ynorm => fun Z => fun zzero => fun zadd => fun zneg => fun zsmul => fun znorm => fun XY => fun xyzero => fun xyadd => fun xyneg => fun xysmul => fun xynorm => fun pairXY => fun fstXY => fun sndXY => fun XZ => fun xzzero => fun xzadd => fun xzneg => fun xzsmul => fun xznorm => fun pairXZ => fun fstXZ => fun sndXZ => fun F => fun base_x => fun base_y => fun dFx => fun dFy => fun dFy_inv => fun dy_op_norm => fun dy_inv_op_norm => fun phi_op_norm => fun phi_inv_op_norm => fun dy_iso => fun args => args (@LinearIsoArgs.{u,p,q} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm XZ xzzero xzadd xzneg xzsmul xznorm (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv) (@BlockTriangularInverse.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv) phi_op_norm phi_inv_op_norm) (fun (dy_iso_arg : @LinearIsoArgs.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm dFy dFy_inv dy_op_norm dy_inv_op_norm) => fun (block_args_arg : @BlockTriangularIsoArgs.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv dy_op_norm dy_inv_op_norm dy_iso) => fun (phi_linear_iso_arg : @LinearIsoArgs.{u,p,q} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm XZ xzzero xzadd xzneg xzsmul xznorm (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv) (@BlockTriangularInverse.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv) phi_op_norm phi_inv_op_norm) => phi_linear_iso_arg)

theorem implicit_phi_block_left_inverse_from_args.{p,q,u,v,w,z} :
  forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (a : Scalar), Scalar), forall (sub : forall (a : Scalar), forall (b : Scalar), Scalar), forall (mul : forall (a : Scalar), forall (b : Scalar), Scalar), forall (le_rel : forall (a : Scalar), forall (b : Scalar), Prop), forall (X : Sort v), forall (xzero : X), forall (xadd : forall (x : X), forall (y : X), X), forall (xneg : forall (x : X), X), forall (xsmul : forall (a : Scalar), forall (x : X), X), forall (xnorm : forall (x : X), Scalar), forall (Y : Sort w), forall (yzero : Y), forall (yadd : forall (x : Y), forall (y : Y), Y), forall (yneg : forall (y : Y), Y), forall (ysmul : forall (a : Scalar), forall (y : Y), Y), forall (ynorm : forall (y : Y), Scalar), forall (Z : Sort z), forall (zzero : Z), forall (zadd : forall (x : Z), forall (y : Z), Z), forall (zneg : forall (z : Z), Z), forall (zsmul : forall (a : Scalar), forall (z : Z), Z), forall (znorm : forall (z : Z), Scalar), forall (XY : Sort p), forall (xyzero : XY), forall (xyadd : forall (x : XY), forall (y : XY), XY), forall (xyneg : forall (x : XY), XY), forall (xysmul : forall (a : Scalar), forall (x : XY), XY), forall (xynorm : forall (x : XY), Scalar), forall (pairXY : forall (x : X), forall (y : Y), XY), forall (fstXY : forall (point : XY), X), forall (sndXY : forall (point : XY), Y), forall (XZ : Sort q), forall (xzzero : XZ), forall (xzadd : forall (x : XZ), forall (y : XZ), XZ), forall (xzneg : forall (x : XZ), XZ), forall (xzsmul : forall (a : Scalar), forall (x : XZ), XZ), forall (xznorm : forall (x : XZ), Scalar), forall (pairXZ : forall (x : X), forall (z : Z), XZ), forall (fstXZ : forall (point : XZ), X), forall (sndXZ : forall (point : XZ), Z), forall (F : forall (point : XY), Z), forall (base_x : X), forall (base_y : Y), forall (dFx : forall (h : X), Z), forall (dFy : forall (h : Y), Z), forall (dFy_inv : forall (z : Z), Y), forall (dy_op_norm : Scalar), forall (dy_inv_op_norm : Scalar), forall (phi_op_norm : Scalar), forall (phi_inv_op_norm : Scalar), forall (dy_iso : @LinearIsoArgs.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm dFy dFy_inv dy_op_norm dy_inv_op_norm), forall (args : @ImplicitPhiIsoArgs.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv dy_op_norm dy_inv_op_norm phi_op_norm phi_inv_op_norm dy_iso), forall (point : XY), @Eq.{p} XY (@BlockTriangularInverse.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv point)) point :=
  fun Scalar => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun le_rel => fun X => fun xzero => fun xadd => fun xneg => fun xsmul => fun xnorm => fun Y => fun yzero => fun yadd => fun yneg => fun ysmul => fun ynorm => fun Z => fun zzero => fun zadd => fun zneg => fun zsmul => fun znorm => fun XY => fun xyzero => fun xyadd => fun xyneg => fun xysmul => fun xynorm => fun pairXY => fun fstXY => fun sndXY => fun XZ => fun xzzero => fun xzadd => fun xzneg => fun xzsmul => fun xznorm => fun pairXZ => fun fstXZ => fun sndXZ => fun F => fun base_x => fun base_y => fun dFx => fun dFy => fun dFy_inv => fun dy_op_norm => fun dy_inv_op_norm => fun phi_op_norm => fun phi_inv_op_norm => fun dy_iso => fun args => fun point => args (@Eq.{p} XY (@BlockTriangularInverse.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv point)) point) (fun (dy_iso_arg : @LinearIsoArgs.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm dFy dFy_inv dy_op_norm dy_inv_op_norm) => fun (block_args_arg : @BlockTriangularIsoArgs.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv dy_op_norm dy_inv_op_norm dy_iso) => fun (phi_linear_iso_arg : @LinearIsoArgs.{u,p,q} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm XZ xzzero xzadd xzneg xzsmul xznorm (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv) (@BlockTriangularInverse.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv) phi_op_norm phi_inv_op_norm) => @block_triangular_left_inverse_from_args.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv dy_op_norm dy_inv_op_norm dy_iso block_args_arg point)

theorem implicit_phi_block_right_inverse_from_args.{p,q,u,v,w,z} :
  forall (Scalar : Sort u), forall (zero : Scalar), forall (one : Scalar), forall (add : forall (a : Scalar), forall (b : Scalar), Scalar), forall (neg : forall (a : Scalar), Scalar), forall (sub : forall (a : Scalar), forall (b : Scalar), Scalar), forall (mul : forall (a : Scalar), forall (b : Scalar), Scalar), forall (le_rel : forall (a : Scalar), forall (b : Scalar), Prop), forall (X : Sort v), forall (xzero : X), forall (xadd : forall (x : X), forall (y : X), X), forall (xneg : forall (x : X), X), forall (xsmul : forall (a : Scalar), forall (x : X), X), forall (xnorm : forall (x : X), Scalar), forall (Y : Sort w), forall (yzero : Y), forall (yadd : forall (x : Y), forall (y : Y), Y), forall (yneg : forall (y : Y), Y), forall (ysmul : forall (a : Scalar), forall (y : Y), Y), forall (ynorm : forall (y : Y), Scalar), forall (Z : Sort z), forall (zzero : Z), forall (zadd : forall (x : Z), forall (y : Z), Z), forall (zneg : forall (z : Z), Z), forall (zsmul : forall (a : Scalar), forall (z : Z), Z), forall (znorm : forall (z : Z), Scalar), forall (XY : Sort p), forall (xyzero : XY), forall (xyadd : forall (x : XY), forall (y : XY), XY), forall (xyneg : forall (x : XY), XY), forall (xysmul : forall (a : Scalar), forall (x : XY), XY), forall (xynorm : forall (x : XY), Scalar), forall (pairXY : forall (x : X), forall (y : Y), XY), forall (fstXY : forall (point : XY), X), forall (sndXY : forall (point : XY), Y), forall (XZ : Sort q), forall (xzzero : XZ), forall (xzadd : forall (x : XZ), forall (y : XZ), XZ), forall (xzneg : forall (x : XZ), XZ), forall (xzsmul : forall (a : Scalar), forall (x : XZ), XZ), forall (xznorm : forall (x : XZ), Scalar), forall (pairXZ : forall (x : X), forall (z : Z), XZ), forall (fstXZ : forall (point : XZ), X), forall (sndXZ : forall (point : XZ), Z), forall (F : forall (point : XY), Z), forall (base_x : X), forall (base_y : Y), forall (dFx : forall (h : X), Z), forall (dFy : forall (h : Y), Z), forall (dFy_inv : forall (z : Z), Y), forall (dy_op_norm : Scalar), forall (dy_inv_op_norm : Scalar), forall (phi_op_norm : Scalar), forall (phi_inv_op_norm : Scalar), forall (dy_iso : @LinearIsoArgs.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm dFy dFy_inv dy_op_norm dy_inv_op_norm), forall (args : @ImplicitPhiIsoArgs.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv dy_op_norm dy_inv_op_norm phi_op_norm phi_inv_op_norm dy_iso), forall (point : XZ), @Eq.{q} XZ (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv (@BlockTriangularInverse.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv point)) point :=
  fun Scalar => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun le_rel => fun X => fun xzero => fun xadd => fun xneg => fun xsmul => fun xnorm => fun Y => fun yzero => fun yadd => fun yneg => fun ysmul => fun ynorm => fun Z => fun zzero => fun zadd => fun zneg => fun zsmul => fun znorm => fun XY => fun xyzero => fun xyadd => fun xyneg => fun xysmul => fun xynorm => fun pairXY => fun fstXY => fun sndXY => fun XZ => fun xzzero => fun xzadd => fun xzneg => fun xzsmul => fun xznorm => fun pairXZ => fun fstXZ => fun sndXZ => fun F => fun base_x => fun base_y => fun dFx => fun dFy => fun dFy_inv => fun dy_op_norm => fun dy_inv_op_norm => fun phi_op_norm => fun phi_inv_op_norm => fun dy_iso => fun args => fun point => args (@Eq.{q} XZ (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv (@BlockTriangularInverse.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv point)) point) (fun (dy_iso_arg : @LinearIsoArgs.{u,w,z} Scalar zero one add neg sub mul le_rel Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm dFy dFy_inv dy_op_norm dy_inv_op_norm) => fun (block_args_arg : @BlockTriangularIsoArgs.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv dy_op_norm dy_inv_op_norm dy_iso) => fun (phi_linear_iso_arg : @LinearIsoArgs.{u,p,q} Scalar zero one add neg sub mul le_rel XY xyzero xyadd xyneg xysmul xynorm XZ xzzero xzadd xzneg xzsmul xznorm (@ImplicitPhiDerivativeMap.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY xyzero xyadd xyneg xysmul xynorm pairXY fstXY sndXY XZ xzzero xzadd xzneg xzsmul xznorm pairXZ fstXZ sndXZ F base_x base_y dFx dFy dFy_inv) (@BlockTriangularInverse.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv) phi_op_norm phi_inv_op_norm) => @block_triangular_right_inverse_from_args.{p,q,u,v,w,z} Scalar zero one add neg sub mul le_rel X xzero xadd xneg xsmul xnorm Y yzero yadd yneg ysmul ynorm Z zzero zadd zneg zsmul znorm XY pairXY fstXY sndXY XZ pairXZ fstXZ sndXZ dFx dFy dFy_inv dy_op_norm dy_inv_op_norm dy_iso block_args_arg point)