Theorem: Float3.x.arg_self.HasAdjDiff_rule (test/deriving/structure_ops.lean)

State before:
⊢ HasAdjDiff Float fun v => v.x
Tactic:
intro x
State after:
x : Float3
⊢ HasAdjDiffAt Float (fun v => v.x) x

State before:
x : Float3
⊢ HasAdjDiffAt Float (fun v => v.x) x
Tactic:
constructor
State after:
case left
x : Float3
⊢ CDifferentiableAt Float (fun v => v.x) x

case right
x : Float3
⊢ HasSemiAdjoint Float (∂ (v:=x), v.x)

State before:
case left
x : Float3
⊢ CDifferentiableAt Float (fun v => v.x) x

case right
x : Float3
⊢ HasSemiAdjoint Float (∂ (v:=x), v.x)
Tactic:
. fun_prop
State after:
case right
x : Float3
⊢ HasSemiAdjoint Float (∂ (v:=x), v.x)

State before:
case right
x : Float3
⊢ HasSemiAdjoint Float (∂ (v:=x), v.x)
Tactic:
. fun_trans; fun_prop
State after:
no goals

State before:
case left
x : Float3
⊢ CDifferentiableAt Float (fun v => v.x) x
Tactic:
fun_prop
State after:
no goals

State before:
case right
x : Float3
⊢ HasSemiAdjoint Float (∂ (v:=x), v.x)
Tactic:
fun_trans
State after:
case right
x : Float3
⊢ HasSemiAdjoint Float fun dx => dx.x

State before:
case right
x : Float3
⊢ HasSemiAdjoint Float fun dx => dx.x
Tactic:
fun_prop
State after:
no goals