Based on the wise words of a crab, I will start writing down some Proof Design Patterns I saw over Axler everything.
- inheriting properties (splitting, doing, merging) “complex numbers inherit commutativity via real numbers” 
- construct then generalize for uniqueness and existence 
- zero is cool, and here too!, also \(1-1=0\) - \(0v = 0\)
- \(1-1 = 0\)
- \(v-v=0\) a.k.a. \(v+(-v)=0\)
- \(v+0 = v\)
 
- distributivity is epic: it is essentially the only tool to connect scalar multiplication and addition in a vector space 
- “smallest” double containement proofs to show set equivalence: prove one way, then prove the converse (\(a \subset b, b\subset a \Rightarrow a=b\)) 
- couple hints - step 1: identify- hypothesis (assumptions)
- desired conclusion (results, trying/to/proof)
 
- step 2: define- write down precise, mathematical notations
 
 
- step 1: identify
- proving uniqueness: set up two distinct results, show that they are the same 
- proving negation: if the “negative” is distinct, but the direct case is more nebulous, use proves by contradiction 
- especially if you are dealing with polynomials, try factoring
- tools to help includes length of linearly-independent list \(\leq\) length of spanning list
 
- Uniqueness by construction: uniqueness part of basis of domain - pick one element that does exist
- pick arbitrary elements and construct a result
 
- if we are trying to prove equivalence, double-containment is a good bet 
- see fundamental theorem of linear maps: but basically wehnever you need to construct basis of things start with an arbiturary basis of the subspace and expand into that of the whole space 
- using NFA in place of a DFA can make your life a lot easier; if you need a DFA in the end then just use subset construction
- remember the NFAs that are useful to make each construction for the properties of regular languages; then, construct any NFA you need to support a particular language out of those properties
