text:
\chapter{Dynamic Programming}

\section{Introduction}
The philosophy of dp:
\begin{enumerate}
\item The definition of \textbf{states}: redefine the original problem into relaxed substructure.
\item The definition of the \textbf{transition functions} among states
\end{enumerate}

The so called concept dp as memoization of recursion does not grasp the core philosophy of dp.

The formula in the following section are unimportant. Instead, what is important is the definition of dp array and transition function derivation.

\runinhead{State definitions.} The state definition is the \textbf{redefinition} of the original problem as substructure.

Three general sets of state definitions of the substructure.
\begin{enumerate}
\item ends \textit{at} index $i$ ($i$ \textbf{required})
\item ends \textit{before} index $i$ ($i$ \textbf{excluded})
\item ends \textit{at} or \textit{before} index $i$ ($i$ \textbf{optional})
\end{enumerate}
\subsection{Common programming practice}
\runinhead{Dummy.} Use dummies to avoid using if-else conditional branch.
\begin{enumerate}
\item Use $n+1$ dp arrays to reserve space for dummies.
\item Iteration range is $[1, n+1)$.
\item $n+k$ for k dummies
\end{enumerate}

\runinhead{Space optimization.} To avoid MLE, we need to carry out space optimization. Let $o$ be other subscripts, $f$ be the transition function.

Firstly,
$$
F_{i, o} = f\big(F_{i-1, o'}\big)
$$

should be reduced to
$$
F_{o} = f\big(F_{o'}\big)
$$

Secondly,
$$
F_{i, o} = f\big(F_{i-1, o'}, F_{i-2. o'}\big)
$$

should be reduced to
$$
F_{i, o} = f\big(F_{(i-1)\%2, o'}, F_{(i-2)\%2. o'}\big)
$$

More generally, we can be $(i-b)\%a$ to reduce the space down to $a$.

Notice:
\begin{enumerate}
\item Must iterate $o$ \textbf{backward} to un-updated value.
\end{enumerate}

\runinhead{Backtrace array.} Normally dp returns the number of count/combinations. To reconstruct the result, store the parent index a backtrace array .

$$
\pi[i]=j
$$

\section{Sequence}\label{dpSequence}

\subsection{Single-state dp}
\runinhead{Longest common subsequence.} Let $F_{i, j}$ be the LCS at string $a[:i]$ and $b[:j]$.

We have two situations: $a[i]=b[j]$ or not.
\begin{eqnarray*}
F_{i. j} = \left\{ \begin{array}{rl}
  F_{i-1, j-1}+1 &\mbox{// if $a[i]=b[j]$} \\
  \max\Big(F_{i-1, j}, &\mbox{// otherwise} \\
  F_{i,j-1}\Big)
       \end{array} \right.
\end{eqnarray*}

\runinhead{Longest common substring.} Let $F_{i, j}$ be the LCS at string $a[:i]$ and
$b[:j]$. We have two situations: $a[i]=b[j]$ or not.
\begin{eqnarray*}
F_{i. j} = \left\{ \begin{array}{rl}
  F_{i-1, j-1}+1 &\mbox{// if $a[i]=b[j]$} \\
  0 &\mbox{// otherwise}
       \end{array} \right.
\end{eqnarray*}

Because it is not necessary that $F_{i,j}\geq F_{i',j'}, \forall i,j\cdot i>i', j>j'$, the $gmax=\max\big(\{{F_{i,j}\}\big)$.
\runinhead{Longest increasing subsequence}. Find the longest increasing subsequence of an array $A$.

let $F_i$ be the LIS length ends at $A_i$.
\begin{eqnarray*}
F_i = \max(F[j]+1 \cdot\forall j < i) \text{ // if $A_i>A_j$}
\end{eqnarray*}

Then the global $maxa$ is:
$$
maxa = \max(F_i\cdot \forall i)
$$

Time complexity: $O(n^2)$

In code, notice the \pyinline{else}.
\begin{python}
F[i] = max(
    F[j] + 1 if A[i] > A[j] else 1
    for j in xrange(i)
)
\end{python}

Alternative solution using binary search in $O(n \log n)$ - Section \ref{extremeValueProblem}.

\runinhead{Maximum subarray sum.} Find the maximum subarray sum of $A$.

Let $F_i$  be the maximum subarray sum ending at $A_{i}$
$$
F_i = \max(F_{i-1}+A_{i}, 0)
$$

Then the global $maxa$ is:
$$
maxa = \max(F_i\cdot \forall i)
$$

\runinhead{Maximum sum of non-adjacent cells.} Get the maximum sum of non-adjacent
cells of an array $A$.

Let $F_i$ be the maximum sum of non-adjacent cells for $A[:i]$. You have tow options:
choose $A_{i-1}$ or not.
\begin{align*}
F_{i} = \max\big(F_{i-1}, F_{i-2}+A_{i-1}\big)
\end{align*}
\runinhead{Edit distance} Find the minimum number of steps required to convert words $A$ to $B$ using inserting, deleting, replacing.

Let $F_{i, j}$ be the minimum number
of steps required to convert $A[:i]$ to $B[:j]$.
\begin{eqnarray*}
F_{i, j} = \left\{ \begin{array}{rl}
  F_{i-1, j-1} &\mbox{// if $a[i]=b[j]$} \\
  \min\Big(F_{i, j-1}+1, &\mbox{// otherwise, insert}\\
  F_{i-1, j}+1, &\mbox{// delete}\\
  F_{i-1, j-1}+1\Big) &\mbox{// replace}\\
       \end{array} \right.
\end{eqnarray*}
\runinhead{H-index} Given an array of citations $A$ of a researcher, write a function to compute the researcher's h-index.

Need some re-representation of information:
\begin{enumerate}
\item Let $C_i$ be the \#paper with $=i$ citations.
\item Let $F_i$ be the \#paper with $\geq i$ citations.
\end{enumerate}
$$
F_i = F_{i+1} + C_i
$$

DP takes $O(n)$. If it is sorted, use binary search to achieve $O(\lg n)$.

\runinhead{Interleaving String} Given $s, a, b$ find whether $s$ is formed by the interleaving
of $a$ and $b$.

Let $F_{i,j}$ be $s[:i+j]$ is interleaved from $a[:i], b[:j]$.

We have to options to choose $s[i+j-1]$, either from $a[i-1]$ or from $b[j-1]$:
\begin{align*}
F_{i,j} &= \Big(F_{i-1, j} \wedge s[i+j-1] = a[i-1]\Big) \\
& \vee \Big(F_{i,j-1} \wedge s[i+j-1] = b[j-1]\Big)
\end{align*}

\runinhead{Largest divisible subset.} Given a list of distinct positive integers $A$, find the largest subset $S$ such that every pair $(S_i, S_j)$ of elements in this
subset satisfies: $S_i \% S_j = 0 \text{ or } S_j \% S_i = 0$.

Let $F_i$ be the length of the divisible subset ending at $A_i$.

$$
F_i = \max_{j: j< i, A_i\%A_j=0}(1+F_j)
$$

Let $\pi_i$ be the index of the previous element of $A_i$ in the divisible subset. $\pi_i$ is used to reconstruct the array.

$$
\pi_i = \arg\max_{j: j< i, A_i\%A_j=0}(1+F_j)
$$

\subsection{Dual-state dp}
\runinhead{Maximal product subarray.} Find the subarray within an array $A$ which has the largest product.
\begin{itemize}
\item Let $small_i$ be the smallest product end with $A_i$.
\item Let $large_i$ be the largest product end with $A_i$.
\item The states can be negative.
\end{itemize}
\begin{eqnarray*}
&& small_i = \min\Big( A_i,\ small_{i-1}\cdot A_i,\ large_{i-1}\cdot A_i \Big)
\nonumber \\
&& large_i = \max\Big( A_i,\ small_{i-1}\cdot A_i,\ large_{i-1}\cdot A_i \Big)
\end{eqnarray*}

It can be optimized to use space $O(1)$.

\runinhead{Trapping Rain Water}
Given n non-negative integers representing an elevation map where the width of each
bar is 1, compute how much water it is able to trap after raining.
\begin{figure}[]
    \centerline{\includegraphics[height = 1in]{rainwatertrap}}
    \caption{Trapping Rain Water}
  \label{fig:rainwatertrap}
\end{figure}

Let $maxL_i$ be the $\max_{i}(A[:i])$; let $maxR_i$ be the $\max_{i}(A[i:n])$. The dp of obtaining max is trivial.

The the total volume $vol$:
$$
vol = \sum_i\max\big(0,\min(maxL_i, maxR_{i+1})-A[i]\big)
$$
\runinhead{Zigzag subsequence.} Find the max length zigzag subsequence which goes up and down alternately within the array $A$.

Let $U_i$ be the max length of zigzag subsequence end at $A_i \wedge$ going up.

Let $D_i$ be the max length of zigzag subsequence end at $A_i \wedge$ going down.
\begin{align*}
U_i &= \max(D_j+1 \cdot \forall j < i) \text{ // if $A_i > A_j$} \\
D_i &= \max(U_j+1 \cdot \forall j < i) \text{ // if $A_i < A_j$}
\end{align*}

Notice in python implementation, don't use list comprehension since two states are interleaved and interdependent.
\subsection{Automata}
\runinhead{Decode ways.} `A' encodes 1, `B' 2, ..., `Z' 26, Given an encoded message containing digits $S$, determine the total number of ways to decode it.

For example, given encoded message 12, it could be decoded as ``AB'' (1 2) or ``L'' (12). Thus, the number of ways decoding 12 is 2.

Let $F_i$ be number of decode ways for $s[:i]$.

\begin{itemize}
\item If $s_{i-1}$ is 0, we only have one way to decode: $10$ or $20$.
$$
F_i = F_{i-2}
$$
\item If $s_{i-1}$ is not 0, we have two one ways to decode: 1) $1 \sim 9$; or 2) $10 \sim26$
$$
F_i = F_{i-1}+F_{i-2}
$$
\end{itemize}
\begin{python}
if s[i-1] != "0":
    F[i] = F[i-1]
    if 10 <= int(s[i-2]+s[i-1]) < 27:
        F[i] += F[i-2]
else:  # 0 is special
    if s[i-2] in ("1", "2"):
        F[i] = F[i-2]
    else:
        return 0
\end{python}
\runinhead{Regex}
\section{Graph}
\subsection{Binary Graph}
\runinhead{Maximal square.} Find the largest rectangle in the matrix:
\begin{lstlisting}
1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1 0 0 1 0
\end{lstlisting}
Let $F_{i, j}$ represents the max square's length ended at $mat_{ij}$ (lower right
corner).

\begin{figure}[!htp]
\centering
\subfloat{\includegraphics[scale=.80]{squareMatrix}}
\caption{Expand the maximal square}
\label{fig:squareMatrix}
\end{figure}
\begin{eqnarray*}
F_{i, j} = \left\{ \begin{array}{rl}
  \min\big(F_{i-1, j-1}, F_{i-1, j}, F_{i, j-1}\big)+1 &\mbox{// if $mat_{i j}=1$}
\\
  0 &\mbox{// otherwise}
       \end{array} \right.
\end{eqnarray*}
\subsection{General Graph}
\runinhead{Shortest path in graph containing negative weights.} Find the shortest path from $s$ to $t$.

Let $F_{n, v}$ be the shortest path from $v$ to $t$ with at most $n$ vertices.

Then we can two options:
\begin{align*}
F_{n, v} = \min\Big(& F_{n-1, v}, \\
& \min_{u \in Nbr}(F_{n-1, w}+c_{uv})\Big)
\end{align*}

, where $c_{uv}$ is the weight cost on edge $(u, v)$, $Nbr$ is neighbors of $v$.

Notice that there should not be any negative cycle otherwise the path can be $-\infty$.
\section{String}
\runinhead{Word break.} Given a string $s$ and a dictionary of words $dict$, determine if $s$ can be segmented into a space-separated sequence of $dict$ words.

Let $F_i$ be whether \pyinline{s[:i]} can be segmented.
\begin{eqnarray*}
F_{i} = \left\{ \begin{array}{rl}
  F_{i-len(w)} &\mbox{// if $\exists w\in dict$, \pyinline{s[i-len(w):i]==w}}\\
  false &\mbox{// otherwise}
       \end{array} \right.
\end{eqnarray*}
Return all such possible sentences. In original case, we use a bool array to record whether a dp could be segmented. Now we should use a vector for every dp to record how to construct that dp from another dp.

Let $F_i$ be all possible segmented words ends at \pyinline{s[i-1]}. $F_i$ is a list. $\exists F_i$ means $F_i$ is not empty.
\begin{eqnarray*}
F_{i} = \left\{ \begin{array}{rl}
  F_{i}+[w] &\mbox{// $\forall w\in dict\cdot$} \\
  & \mbox{ if \pyinline{s[i-len(w):i]==w} $\wedge\ \exists
F_{i-len(w)$ } \\
  F_{i}} &\mbox{// otherwise}
       \end{array} \right.
\end{eqnarray*}

Reconstruct the sentence from $F_i$. It is like building path for the tree. Using backtracking:
\begin{python}
def build(self, dp, i, cur, ret):
    if cur_index == 0:
        ret.append(" ".join(list(cur)))
        return

    # backtracking
    for word in dp[i]:
        cur.appendleft(word)
        self.build(dp, i-len(word), cur, ret)
        cur.popleft()

\end{python}

\runinhead{Is palindrome.} Given a string $s$, use an array to determine whether $s[i:j]$ is palindrome.

Let $P_{i,j}$  indicates whether $s[i:j]$ is palindrome. We have one condition - whether the head and the end letter are equal:
\begin{eqnarray*}
P_{i. j} = P_{i-1, j+1}\ \wedge\ s[i] = s[j-1]
\end{eqnarray*}

The code for palindrome dp is error-prone due to indexing. Notice that $i \in [0, n), j \in [i, n+1)$.
\begin{python}
n = len(s)
pa = [[False for _ in xrange(n+1)] for _ in xrange(n)]
for i in xrange(n):
    pa[i][i] = True
    pa[i][i+1] = True

for i in xrange(n-2, -1, -1):
    for j in xrange(i+2, n+1):
        pa[i][j] = pa[i+1][j-1] and s[i] == s[j-1]
\end{python}
\runinhead{Minimum palindrome cut.} Given a string s, partition s such that every substring of the partition is a palindrome. Return the minimum cuts needed for a palindrome partitioning of s.

Let $C_i$ be the min cut for $s[:i]$. We have \textit{1 more cut} from previous state to make $S[:i]$ palindrome.
\begin{eqnarray*}
C_{i} = \left\{ \begin{array}{rl}
  \min\big(C[k]+1 \cdot \forall k<i \big) &\mbox{// if $s[k:i]$ is palindrome}
\\
  0 &\mbox{// otherwise}
       \end{array} \right.
\end{eqnarray*}
\begin{python}
def minCut(self, s):
  n = len(s)

  P = [[False for _ in xrange(n+1)] for _ in xrange(n+1)]
  for i in xrange(n+1):  # len 0
    P[i][i] = True
  for i in xrange(n):  # len 1
    P[i][i+1] = True

  for i in xrange(n, -1, -1):  # len 2 and above
    for j in xrange(i+2, n+1):
      P[i][j] = P[i+1][j-1] and s[i] == s[j-1]

  C = [i for i in xrange(n+1)]  # max is all cut
  for i in xrange(n+1):
    if P[0][i]:
      C[i] = 0
    else:
      C[i] = min(
          C[j] + 1
          for j in xrange(i)
          if P[j][i]
      )

  return C[n]
\end{python}
\runinhead{ab string.} Change the char in a str only consists of `a' and `b' to non-decreasing order. Find the min number of char changes.

Two-state dp: `a' $\rightarrow$ `b' and  `b' $\rightarrow$ `a'. 1 cut into 2 segment.

\runinhead{abc string.} Follow up for ab string. Three-state dp: $chr \neq a, chr \neq b, chr \neq c$. 2 cuts into 3 segments.

\section{Divide \& Conquer}
\subsection{Tree}
\runinhead{Number of different BSTs.} It can be solved using Catalan number (Section \ref{section:catalanNumber}), but here goes the dp solution.
\begin{lstlisting}
   1         3     3      2      1
    \       /     /      / \      \
     3     2     1      1   3      2
    /     /       \                 \
   2     1         2                 3
\end{lstlisting}

Let $F_i$ be the \#BSTs constructed from $i$ elements. The pattern of choosing one element as the root is:
\begin{align*}
F_3 = F_0*F_2 + F_1*F_1 + F_2*F_0
\end{align*}

Thus, in general,
\begin{align*}
F_i = \sum(F_{j}*F_{i-1-j} \cdot \forall j< i)
\end{align*}

\subsection{Array}
\runinhead{Burst balloons.} Given $n$ balloons, indexed from 0 to $n-1$. Each balloon is painted with a number on it represented by array $A$. You are asked to burst all the balloons. If the you burst balloon i you will get \pythoninline{A[left] * A[i] * A[right]} coins. Here left and right are adjacent indices of i. After the burst, the left and right then becomes adjacent.

Find the maximum coins you can collect by bursting the balloons wisely.

\textbf{Core clues}:
\begin{enumerate}
\item Divide \& Conquer
\item Boundary definition
\item Reverse Thinking: think about $n$ balloons if $A_i$ is the last one to burst, what now? - Backward dp
\end{enumerate}
Let $F_{i, j}$ be the max scores burst all over \pythoninline{A[i:j]}.

\begin{align*}
F_{i, j} = \max(F_{i,k} + A_{i-1}  A_k A_j + F_{k+1, j} \cdot \forall k)
\end{align*}
, where $k$ is the last one to burst.

Notice that $A_{i-1}, A_{j}$ go beyond $[i, j)$.

\section{Knapsack}
Knapsack problem is different from the sequence problem. It is a problem of \textbf{bag} rather than of sequence, since the order of element does not matter.

\subsection{Classical}
Given $n$ items with weight $w_i$ and value $v_i$, an integer $C$ denotes the size of a backpack. What is the max value you can fill this backpack?

Let $F_{i, c}$ be the max value we can carry for index $0..i$ with capacity $c$. We have 2 choices: take the $i$-th item or not.
\begin{eqnarray*}
F_{i, c}= \max\big(&&F_{i-1, c}, \\
&&F_{i-1, c-w_i}+v_i\big)
\end{eqnarray*}
Advanced backpack problem\footnote{\href{http://github.com/tianyicui/pack}{Nine Lectures in Backpack Problem}.}.

\subsection{Sum}
\runinhead{k sum.} Given $n$ distinct positive integers, integer $k$ ($k \leq n$) and a number target. Find $k$ numbers where sum is target. Calculate the number of solutions. Since we only need the number of solutions, thus it can be solved using dp. If we need to enumerate all possible answers, need to do dfs instead.

$$
sum{j \choose i} = v
$$

Let $F_{i, j, v}$ means the \#ways of selecting $i$ elements from the first $j$ elements so that their sum equals to $v$. $j$ is the scanning pointer.

You have two options: either select $A_{j-1}$ or not.
$$
F_{i, j, v} = F_{i-1, j-1, v-A_{j-1}} + F_{i, j-1, v}
$$
Time complexity: O(n^2 k)
\section{Local and Global Extremes}
\subsection{Long and short stocks}
\subsubsection{At most $k$ transactions}

The following formula derives from the question: Best Time to Buy and Sell Stock IV. Say you have an array for which the $i$-th element is the price of a given stock on day $i$. Design an algorithm to find the maximum profit. You may complete at most $k$ transactions.

Let $local_{i, j}$ be the max profit with $j$ transactions with last transactions \textbf{ended at} day $i$. Let $global_{i, j}$ be the max profit with transactions \textbf{ended at} or \textbf{before} day $i$ with $j$ transactions.

To derive transition function for $local$, for any given day $i$, you have two options: 1) transact in one day; 2) hold the stock one more day than previous and then transact. The latter option is equivalent to revert yesterday's transaction and instead transact today.

To derive transition function for $global$, for any given day $i$, you have two options: 1) transact today; 2) don't transact today.
\begin{eqnarray*}
&& local_{i,j} = \max\Big(global_{i-1.j-1}+\Delta, local_{i-1,j}+\Delta\Big) \nonumber \\
&& global_{i,j} = \max\Big(local_{i, j}, global_{i-1,j}\Big)
\end{eqnarray*}
, where $\Delta$ is the price change (i.e. profit) at day $i$.\\
Notice:
\begin{enumerate}
\item Consider opportunity costs and reverting transaction.
\item The global min is not $glocal[-1]$ but $\max\big(\{global[i]\}\big)$.
\item You must sell the stock before you buy again (i.e. you can not have higher than 1 in stock position).
\end{enumerate}

\runinhead{Space optimization.}
\begin{eqnarray*}
&& local_{j} = \max\Big(global_{j-1} + \Delta, local_{j}+\Delta\Big)
\nonumber \\
&& global_{j} = \max\Big(local_{j}, global_{j}\Big)
\end{eqnarray*}

Notice,
\begin{enumerate}
\item Must iterate $j$ \textbf{backward}; otherwise we will use the updated value.
\end{enumerate}

\runinhead{Alternative definitions.}
Other possible definitions: let $global_{i, j}$ be the max profit
with transactions ended at or before day $i$ with \textbf{up to} $j$ transactions. Then,
\begin{eqnarray*}
&& local_{i,j} = \max\Big(global_{i-1.j-1} + \max(0, \Delta), local_{i-1,j}+\Delta\Big)
\nonumber \\
&& global_{i,j} = \max\Big(local_{i, j}, global_{i-1,j}\Big)
\end{eqnarray*}
and $global[-1]$ is the global max.

The complexity of the alternative definitions is the same as the original definitions. The bottom line is that different definitions of states result in different transition functions.
\subsubsection{With cool down}

Find the maximum profit. You may complete as many transactions as you like with the following restrictions:
\begin{itemize}
\item You may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).
\item After you sell your stock, you cannot buy stock on next day. (ie, cooldown 1 day)
\end{itemize}

Let $F_i$ be the max profit from day 0 to day $i$, selling stock at day $i$. (i.e. ended at)

Let $M_i$ be the max profit from day 0 to day $i$. (i.e. ended at or brefore)

For $F_i$, at each day $i$, you have two options: 1) Sell the stock that has been held for multiple days. 2) Sell the stock held for 1 day.
Notice the 1st option, it is equivalent to reverting the previous transaction, selling at day $i$ instead of day $i-1$.
\begin{eqnarray*}
F_{i}= \max\big(&&F_{i-1}+\Delta \\
&&M_{i-2-CD}+\Delta \big)
\end{eqnarray*}
, where $CD=1$, the cool down time, $\Delta = A_i-A_{i-1}$

For $M_i$, simply,
$$
M_i = \max(M_{i-1}, F_i)
$$

\section{Game theory - multi players}
Assumption: the opponent take the optimal strategy for herself.

\subsection{Coin game}
\runinhead{Single side.} There are $n$ coins with different value in a line. Two players take turns to take 1 or 2 coins from left side. The player who take the coins with the most value wins.

let $F_i^p$ represents maximum values he can get for index $i..last$, for the person p. There are 2 choices: take the $i$-th coin or take the $i$-th and $(i+1)$-th coin.
\begin{eqnarray*}
F_i^p = \max\big(&A_i&+S[i+1:]-F_{i+1}^{p'},  \\
&A_i&+A_{i+1}+S[i+2:]-F_{i+2}^{p'}\big)
\end{eqnarray*}
The above equation can be further optimized by merging the sum $S$.

\runinhead{Dual sides.}There are n coins in a line. Two players take turns to take a coin from either of the ends of the line until there are no more coins left. The player with the larger amount of money wins.

let $F_{i, j}^p$ represents maximum values he can get for index $i..j$, for
the person p. There are 2 choices: take the $i$-th coin or take the $j$-th coin.
\begin{eqnarray*}
F_{i,j}^p = \max\big(&A_i&+S[i+1:j]-F_{i+1,j}^{p'},  \\
&A_j&+S[i:j-1]-F_{i,j-1}^{p'}\big)
\end{eqnarray*}

max_stars_repo_name: algorhythms/Algo-Quicksheet


text:
\documentclass{sigchi}

% Use this command to override the default ACM copyright statement
% (e.g. for preprints).  Consult the conference website for the
% camera-ready copyright statement.

%% EXAMPLE BEGIN -- HOW TO OVERRIDE THE DEFAULT COPYRIGHT STRIP -- (July 22, 2013 - Paul Baumann)
% \toappear{Permission to make digital or hard copies of all or part of this work for personal or classroom use is      granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from permissions@acm.org. \\
% {\emph{CHI'14}}, April 26--May 1, 2014, Toronto, Canada. \\
% Copyright \copyright~2014 ACM ISBN/14/04...\$15.00. \\
% DOI string from ACM form confirmation}
%% EXAMPLE END -- HOW TO OVERRIDE THE DEFAULT COPYRIGHT STRIP -- (July 22, 2013 - Paul Baumann)

% Arabic page numbers for submission.  Remove this line to eliminate
% page numbers for the camera ready copy

%\pagenumbering{arabic}

% Load basic packages
\usepackage{balance}  % to better equalize the last page
\usepackage{graphics} % for EPS, load graphicx instead
%\usepackage[T1]{fontenc}
\usepackage{txfonts}
\usepackage{times}    % comment if you want LaTeX's default font
\usepackage[pdftex]{hyperref}
% \usepackage{url}      % llt: nicely formatted URLs
\usepackage{color}
\usepackage{textcomp}
\usepackage{booktabs}
\usepackage{ccicons}
\usepackage{todonotes}

% llt: Define a global style for URLs, rather that the default one
\makeatletter
\def\url@leostyle{%
  \@ifundefined{selectfont}{\def\UrlFont{\sf}}{\def\UrlFont{\small\bf\ttfamily}}}
\makeatother
\urlstyle{leo}

% To make various LaTeX processors do the right thing with page size.
\def\pprw{8.5in}
\def\pprh{11in}
\special{papersize=\pprw,\pprh}
\setlength{\paperwidth}{\pprw}
\setlength{\paperheight}{\pprh}
\setlength{\pdfpagewidth}{\pprw}
\setlength{\pdfpageheight}{\pprh}

% Make sure hyperref comes last of your loaded packages, to give it a
% fighting chance of not being over-written, since its job is to
% redefine many LaTeX commands.
\definecolor{linkColor}{RGB}{6,125,233}
\hypersetup{%
  pdftitle={SIGCHI Conference Proceedings Format},
  pdfauthor={LaTeX},
  pdfkeywords={SIGCHI, proceedings, archival format},
  bookmarksnumbered,
  pdfstartview={FitH},
  colorlinks,
  citecolor=black,
  filecolor=black,
  linkcolor=black,
  urlcolor=linkColor,
  breaklinks=true,
}

% create a shortcut to typeset table headings
% \newcommand\tabhead[1]{\small\textbf{#1}}

% End of preamble. Here it comes the document.
\begin{document}

\title{SIGCHI Conference Proceedings Format}

\numberofauthors{3}
\author{%
  \alignauthor{1st Author Name\\
    \affaddr{Affiliation}\\
    \affaddr{City, Country}\\
    \email{e-mail address}}\\
  \alignauthor{2nd Author Name\\
    \affaddr{Affiliation}\\
    \affaddr{City, Country}\\
    \email{e-mail address}}\\
  \alignauthor{3rd Author Name\\
    \affaddr{Affiliation}\\
    \affaddr{City, Country}\\
    \email{e-mail address}}\\
}

\maketitle

\begin{abstract}
  UPDATED---\today. This sample paper describes the
  formatting requirements for SIGCHI conference proceedings, and
  offers recommendations on writing for the worldwide SIGCHI
  readership. Please review this document even if you have submitted
  to SIGCHI conferences before, as some format details have changed
  relative to previous years. Abstracts should be about 150 words and
  are required.
\end{abstract}

\keywords{Authors' choice; of terms; separated; by semi\-colons;
  commas, within terms only; this section is required.}

\category{H.5.m.}{Information Interfaces and Presentation
  (e.g. HCI)}{Miscellaneous} \category{See
  \url{http://acm.org/about/class/1998/} for the full list of ACM
  classifiers. This section is required.}{}{}

\section{Introduction}

This format is to be used for submissions that are published in the
conference proceedings. We wish to give this volume a consistent,
high-quality appearance. We therefore ask that authors follow some
simple guidelines. You should format your paper exactly like this
document. The easiest way to do this is to replace the content with
your own material.  This document describes how to prepare your
submissions using \LaTeX.

\section{Page Size and Columns}
On each page your material should fit within a rectangle of 7 $\times$
9.25 inches (18 $\times$ 23.5 cm), centered on a US Letter page (8.5
$\times$ 11 inches), beginning 0.75 inches (1.9 cm) from the top of
the page, with a 0.33 inches (0.85 cm) space between two 3.3 inches
(8.4 cm) columns. Right margins should be justified, not
ragged. Please be sure your document and PDF are US letter and not A4.

\section{Typeset Text}
The styles contained in this document have been modified from the
default styles to reflect ACM formatting conventions. For example,
content paragraphs like this one are formatted using the Normal style.

\LaTeX\ sometimes will create overfull lines that extend into columns.
To attempt to combat this, the \texttt{.cls} file has a command,
\texttt{{\textbackslash}sloppy}, that essentially asks \LaTeX\ to
prefer underfull lines with extra whitespace.  For more details on
this, and info on how to control it more finely, check out
{\url{http://www.economics.utoronto.ca/osborne/latex/PMAKEUP.HTM}}.

\subsection{Title and Authors}

Your paper's title, authors and affiliations should run across the
full width of the page in a single column 17.8 cm (7 in.) wide.  The
title should be in Helvetica or Arial 18-point bold.  Authors' names
should be in Times New Roman or Times Roman 12-point bold, and
affiliations in 12-point regular.

See \texttt{{\textbackslash}author} section of this template for
instructions on how to format the authors. For more than three
authors, you may have to place some address information in a footnote,
or in a named section at the end of your paper. Leave one 10-point
line of white space below the last line of affiliations.

\subsection{Abstract and Keywords}

Every submission should begin with an abstract of about 150 words,
followed by a set of Author Keywords and ACM Classification
Keywords. The abstract and keywords should be placed in the left
column of the first page under the left half of the title. The
abstract should be a concise statement of the problem, approach, and
conclusions of the work described. It should clearly state the paper's
contribution to the field of HCI\@.

\subsection{Normal or Body Text}

Please use a 10-point Times New Roman or Times Roman font or, if this
is unavailable, another proportional font with serifs, as close as
possible in appearance to Times Roman 10-point. Other than Helvetica
or Arial headings, please use sans-serif or non-proportional fonts
only for special purposes, such as source code text.

\subsection{First Page Copyright Notice}
This template include a sample ACM copyright notice at the bottom of
page 1, column 1.  Upon acceptance, you will be provided with the
appropriate copyright statement and unique DOI string for publication.
Accepted papers will be distributed in the conference
publications. They will also be placed in the ACM Digital Library,
where they will remain accessible to thousands of researchers and
practitioners worldwide. See
\url{http://acm.org/publications/policies/copyright_policy} for the
ACM’s copyright and permissions policy.

%%%

\subsection{Subsequent Pages}

On pages beyond the first, start at the top of the page and continue
in double-column format.  The two columns on the last page should be
of equal length.

\begin{figure}
\centering
  \includegraphics[width=0.9\columnwidth]{figures/sigchi-logo}
  \caption{Insert a caption below each figure. Do not alter the
    Caption style.}~\label{fig:figure1}
\end{figure}

\subsection{References and Citations}

Use a numbered list of references at the end of the article, ordered
alphabetically by last name of first author, and referenced by numbers
in
brackets~\cite{acm_categories,ethics,Klemmer:2002:WSC:503376.503378}.
Your references should be published materials accessible to the
public. Internal technical reports may be cited only if they are
easily accessible (i.e., you provide the address for obtaining the
report within your citation) and may be obtained by any reader for a
nominal fee. Proprietary information may not be cited. Private
communications should be acknowledged in the main text, not referenced
(e.g., ``[Borriello, personal communication]'').

References should be in ACM citation format:
\url{http://acm.org/publications/submissions/latex_style}. This
includes citations to internet
resources~\cite{acm_categories,cavender:writing,CHINOSAUR:venue,psy:gangnam}
according to ACM format, although it is often appropriate to include
URLs directly in the text, as above.

% Use a numbered list of references at the end of the article, ordered
% alphabetically by first author, and referenced by numbers in
% brackets~\cite{ethics, Klemmer:2002:WSC:503376.503378,
%   Mather:2000:MUT, Zellweger:2001:FAO:504216.504224}. For papers from
% conference proceedings, include the title of the paper and an
% abbreviated name of the conference (e.g., for Interact 2003
% proceedings, use \textit{Proc. Interact 2003}). Do not include the
% location of the conference or the exact date; do include the page
% numbers if available. See the examples of citations at the end of this
% document. Within this template file, use the \texttt{References} style
% for the text of your citation.

% Your references should be published materials accessible to the
% public.  Internal technical reports may be cited only if they are
% easily accessible (i.e., you provide the address for obtaining the
% report within your citation) and may be obtained by any reader for a
% nominal fee.  Proprietary information may not be cited. Private
% communications should be acknowledged in the main text, not referenced
% (e.g., ``[Robertson, personal communication]'').

\begin{table}
  \centering
  \begin{tabular}{r c c}
    \toprule
    & \multicolumn{2}{c}{\small{\textbf{Caption}}} \\
    \cmidrule(r){2-3}
    {\small\textbf{Objects}}
    & {\small \textit{Pre-2002}}
    & {\small \textit{Current}} \\
    \midrule
    Tables & Above & Below \\
    Figures & Below & Below \\
    \bottomrule
  \end{tabular}
  \caption{Table captions should be placed below the table. We
    recommend table lines be 1 point, 25\% black. Minimize use of
    unnecessary table lines.}~\label{tab:table1}
\end{table}

\section{Sections}

The heading of a section should be in Helvetica or Arial 9-point bold,
all in capitals. Sections should \textit{not} be numbered.

\subsection{Subsections}

Headings of subsections should be in Helvetica or Arial 9-point bold
with initial letters capitalized.  For sub-sections and
sub-subsections, a word like \emph{the} or \emph{of} is not
capitalized unless it is the first word of the heading.

\subsubsection{Sub-subsections}

Headings for sub-subsections should be in Helvetica or Arial 9-point
italic with initial letters capitalized.  Standard
\texttt{{\textbackslash}section}, \texttt{{\textbackslash}subsection},
and \texttt{{\textbackslash}subsubsection} commands will work fine in
this template.

\section{Figures/Captions}

Place figures and tables at the top or bottom of the appropriate
column or columns, on the same page as the relevant text (see
Figure~\ref{fig:figure1}). A figure or table may extend across both
columns to a maximum width of 17.78 cm (7 in.).

\begin{figure*}
  \centering
  \includegraphics[width=2\columnwidth]{figures/map}
  \caption{In this image, the map maximizes use of space. You can make
    figures as wide as you need, up to a maximum of the full width of
    both columns. Note that \LaTeX\ tends to render large figures on a
    dedicated page. Image: \ccbynd~ayman on
    Flickr.}~\label{fig:figure2}
\end{figure*}

Captions should be Times New Roman or Times Roman 9-point bold.  They
should be numbered (e.g., ``Table~\ref{tab:table1}'' or
``Figure~\ref{fig:figure1}''), centered and placed beneath the figure
or table.  Please note that the words ``Figure'' and ``Table'' should
be spelled out (e.g., ``Figure'' rather than ``Fig.'') wherever they
occur. Figures, like Figure~\ref{fig:figure2}, may span columns and
all figures should also include alt text for improved accessibility.
Papers and notes may use color figures, which are included in the page
limit; the figures must be usable when printed in black-and-white in
the proceedings.

The paper may be accompanied by a short video figure up to five
minutes in length. However, the paper should stand on its own without
the video figure, as the video may not be available to everyone who
reads the paper.

\subsection{Inserting Images}
When possible, include a vector formatted graphic (i.e. PDF or EPS).
When including bitmaps,  use an image editing tool to resize the image
at the appropriate printing resolution (usually 300 dpi).

\section{Language, Style and Content}

The written and spoken language of SIGCHI is English. Spelling and
punctuation may use any dialect of English (e.g., British, Canadian,
US, etc.) provided this is done consis- tently. Hyphenation is
optional. To ensure suitability for an international audience, please
pay attention to the following:

\begin{itemize}
\item Write in a straightforward style.
\item Try to avoid long or complex sentence structures.
\item Briefly define or explain all technical terms that may be
  unfamiliar to readers.
\item Explain all acronyms the first time they are used in your
  text---e.g., ``Digital Signal Processing (DSP)''.
\item Explain local references (e.g., not everyone knows all city
  names in a particular country).
\item Explain ``insider'' comments. Ensure that your whole audience
  understands any reference whose meaning you do not describe (e.g.,
  do not assume that everyone has used a Macintosh or a particular
  application).
\item Explain colloquial language and puns. Understanding phrases like
  ``red herring'' may require a local knowledge of English.  Humor and
  irony are difficult to translate.
\item Use unambiguous forms for culturally localized concepts, such as
  times, dates, currencies, and numbers (e.g., ``1--5--97'' or
  ``5/1/97'' may mean 5 January or 1 May, and ``seven o'clock'' may
  mean 7:00 am or 19:00). For currencies, indicate equivalences:
  ``Participants were paid {\fontfamily{txr}\selectfont \textwon}
  25,000, or roughly US \$22.''
\item Be careful with the use of gender-specific pronouns (he, she)
  and other gendered words (chairman, manpower, man-months). Use
  inclusive language that is gender-neutral (e.g., she or he, they,
  s/he, chair, staff, staff-hours, person-years). See the
  \textit{Guidelines for Bias-Free Writing} for further advice and
  examples regarding gender and other personal
  attributes~\cite{Schwartz:1995:GBF}. Be particularly aware of
  considerations around writing about people with disabilities.
\item If possible, use the full (extended) alphabetic character set
  for names of persons, institutions, and places (e.g.,
  Gr{\o}nb{\ae}k, Lafreni\'ere, S\'anchez, Nguy\~{\^{e}}n,
  Universit{\"a}t, Wei{\ss}enbach, Z{\"u}llighoven, \r{A}rhus, etc.).
  These characters are already included in most versions and variants
  of Times, Helvetica, and Arial fonts.
\end{itemize}

\section{Accessibility}
The Executive Council of SIGCHI has committed to making SIGCHI
conferences more inclusive for researchers, practitioners, and
educators with disabilities. As a part of this goal, the all authors
are asked to work on improving the accessibility of their
submissions. Specifically, we encourage authors to carry out the
following five steps:
\begin{enumerate}
\item Add alternative text to all figures
\item Mark table headings
\item Add tags to the PDF
\item Verify the default language
\item Set the tab order to ``Use Document Structure''
\end{enumerate}
For more information and links to instructions and resources, please
see: \url{http://chi2016.acm.org/accessibility}.  The
\texttt{{\textbackslash}hyperref} package allows you to create well tagged PDF files,
please see the preamble of this template for an example.

\section{Page Numbering, Headers and Footers}
Your final submission should not contain footer or header information
at the top or bottom of each page. Specifically, your final submission
should not include page numbers. Initial submissions may include page
numbers, but these must be removed for camera-ready. Page numbers will
be added to the PDF when the proceedings are assembled.

\section{Producing and Testing PDF Files}

We recommend that you produce a PDF version of your submission well
before the final deadline.  Your PDF file must be ACM DL
Compliant. The requirements for an ACM Compliant PDF are available at:
{\url{http://www.sheridanprinting.com/typedept/ACM-distilling-settings.htm}}.

Test your PDF file by viewing or printing it with the same software we
will use when we receive it, Adobe Acrobat Reader Version 10. This is
widely available at no cost. Note that most
reviewers will use a North American/European version of Acrobat
reader, so please check your PDF accordingly.

When creating your PDF from Word, ensure that you generate a tagged
PDF from improved accessibility. This can be done by using the Adobe
PDF add-in, also called PDFMaker. Select Acrobat | Preferences from
the ribbon and ensure that ``Enable Accessibility and Reflow with
tagged Adobe PDF'' is selected. You can then generate a tagged PDF by
selecting ``Create PDF'' from the Acrobat ribbon.

\section{Conclusion}

It is important that you write for the SIGCHI audience. Please read
previous years’ proceedings to understand the writing style and
conventions that successful authors have used. It is particularly
important that you state clearly what you have done, not merely what
you plan to do, and explain how your work is different from previously
published work, i.e., the unique contribution that your work makes to
the field. Please consider what the reader will learn from your
submission, and how they will find your work useful. If you write with
these questions in mind, your work is more likely to be successful,
both in being accepted into the conference, and in influencing the
work of our field.

\section{Acknowledgments}

Sample text: We thank all the volunteers, and all publications support
and staff, who wrote and provided helpful comments on previous
versions of this document. Authors 1, 2, and 3 gratefully acknowledge
the grant from NSF (\#1234--2012--ABC). \textit{This whole paragraph is
  just an example.}

% Balancing columns in a ref list is a bit of a pain because you
% either use a hack like flushend or balance, or manually insert
% a column break.  http://www.tex.ac.uk/cgi-bin/texfaq2html?label=balance
% multicols doesn't work because we're already in two-column mode,
% and flushend isn't awesome, so I choose balance.  See this
% for more info: http://cs.brown.edu/system/software/latex/doc/balance.pdf
%
% Note that in a perfect world balance wants to be in the first
% column of the last page.
%
% If balance doesn't work for you, you can remove that and
% hard-code a column break into the bbl file right before you
% submit:
%
% http://stackoverflow.com/questions/2149854/how-to-manually-equalize-columns-
% in-an-ieee-paper-if-using-bibtex
%
% Or, just remove \balance and give up on balancing the last page.
%
\balance{}

\section{References Format}
Your references should be published materials accessible to the
public. Internal technical reports may be cited only if they are
easily accessible (i.e., you provide the address for obtaining the
report within your citation) and may be obtained by any reader for a
nominal fee. Proprietary information may not be cited. Private
communications should be acknowledged in the main text, not referenced
(e.g., ``[Golovchinsky, personal communication]'').

Use a numbered list of references at the end of the article, ordered
alphabetically by first author, and referenced by numbers in
brackets~\cite{ethics,Klemmer:2002:WSC:503376.503378}. For papers from
conference proceedings, include the title of the paper and an
abbreviated name of the conference (e.g., for Interact 2003
proceedings, use Proc.\ Interact 2003). Do not include the location of
the conference or the exact date; do include the page numbers if
available. See the examples of citations at the end of this document
and in the accompanying \texttt{BibTeX} document.

References \textit{must be the same font size as other body
  text}. References should be in alphabetical order by last name of
first author. Example reference formatting for individual journal
articles~\cite{ethics}, articles in conference
proceedings~\cite{Klemmer:2002:WSC:503376.503378},
books~\cite{Schwartz:1995:GBF}, theses~\cite{sutherland:sketchpad},
book chapters~\cite{winner:politics}, a journal issue~\cite{kaye:puc},
websites~\cite{acm_categories,cavender:writing},
tweets~\cite{CHINOSAUR:venue}, patents~\cite{heilig:sensorama}, and
online videos~\cite{psy:gangnam} is given here. This formatting is a
slightly abbreviated version of the format automatically generated by
the ACM Digital Library (\url{http://dl.acm.org}) as ``ACM Ref''. More
details of reference formatting are available at:
\url{http://www.acm.org/publications/submissions/latex_style}.

% REFERENCES FORMAT
% References must be the same font size as other body text.
\bibliographystyle{SIGCHI-Reference-Format}
\bibliography{sample}

\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:

ext: tex

max_stars_repo_name: cjw-charleswu/Tiny

max_issues_repo_name: cjw-charleswu/Tiny

max_forks_repo_name: cjw-charleswu/Tiny


text:
%!TEX root =  ../main.tex

\subsection{Sine Slices}
Trigonometric equations are unlike linear equations, in that they have infinitely many
answers.  We typically answer them over a domain like $\theta \in \left[0,\tau\right]$ or
$\theta \in \left[\-\frac{\tau}{2},\frac{\tau}{2}\right]$.  Let us begin by finding a way to
express the infinite solution set.

\marginfig[-0.5in]{\chapdir/pics/Sin_unit_circle.png}{The height achieved by turning
angle $\alpha$ will reoccur in one other place\label{fig:sinecircle}.}
Suppose we want to find all the answers to a simple equation
\begin{equation}\label{eq:sinx12}
\sin(x) = \frac{1}{2}
\end{equation}
With the Unit Circle memorized, we can easily recall that this happens at
$\frac{\tau}{12}$.  However, we know that sine is $y$ on the Unit Circle, and so it
will come up again and again.  As Fig.~\ref{fig:sinecircle} shows, the height will
reoccur at $\frac{\tau}{2}-\theta$.  We also can add or subtract as many full-rotations
(i.e. $\tau$) as we like, and still get the same height.  This means that the full
solutions set for Eq.~\ref{eq:sinx12} is
$$
x  = \begin{cases} \frac{\tau}{12} & \pm k\tau\\
\frac{11\tau}{12} & \pm k\tau \end{cases}
$$
where $k \in \mathbb{W}$.  Or the more general solution for $\sin\theta=x$:
\begin{equation}
\theta  = \begin{cases} \sin^{-1}(x) & \pm k\tau\\
\frac{\tau}{2} - \sin^{-1}(x) & \pm k\tau \end{cases}
\end{equation}
Notice that only if $\sin^{-1}(x)$ is known can these be resolved without a
calculator.

\subsection{Cosine Cuts}
\marginfig[0in]{\chapdir/pics/Cos_unit_circle.png}{The horizontal displacement
achieved by turning  angle $\alpha$ will reoccur in one other place\label{fig:cosinecircle}.}
Substitution can help prevent confusion when there are confusing extras like (e.g. $\theta-17$) inside
There can be quadratics etc, which substitution make clearer.  In general, if you find
yourself distracted or daunted by a bit of notation, remove it from sight for a moment and
solve the easier part, before bringing back the difficulty.

Consider the broad question, asked without domain restrictions
\begin{equation}
\cos(x) = -\frac{1}{2}
\end{equation}
This should be read in our minds in a clear verbal language as, ``What angles $x$ can be
turned from standard position the produce horizontal displacements of 0.5 to the left?''
Hopefully, this restatement allows us to visualize that both a third and fourth
quadrant angle exist that have the same $x$ value.  Because these angle can be reached by
turning the same amount clockwise or counter-clockwise, we can write our answer
succinctly as
$$
x= \pm\frac{\tau}{3} \pm k\tau
$$
Universally, the solution to $\cos\theta = x$ is
\begin{equation}
\theta = \pm\cos^{-1}(x) \pm k\tau
\end{equation}

Now, if we are solving an equation with a strange term, we are still able to see the
answers clearly through substitution.  For example,
$$
2 \cos (\theta - 17^\circ) = 1
$$
invites us to divide by two, but what then?  It is clarifying to substitute in the expression
\begin{equation}
u = \theta - 17
\end{equation}
A perfectly valid move, provided with undo it before the end.  If $\cos u = \frac{1}{2}$, our
answers in degrees are $u = \pm60^\circ \pm k\tau$, but we have answered in the wrong
variable.  ``Unsubstituting'', we get
\begin{equation}
\theta - 17^\circ = \begin{cases} 60^\circ & \pm k\tau \\ -60^\circ & \pm k\tau \end{cases}
\end{equation}
Perhaps you have not experienced manipulated equations with cases in them.  It is no
surprise that we simple add 17 to both sides, only on the right there are two places to do so.
Final answers:
$$
\theta = \begin{cases} 77^\circ & \pm k\tau \\ -43^\circ & \pm k\tau \end{cases}
$$

\subsection{Tangent Tilts}
Lastly, tangent can be the easiest to deal with, because it's period is less than one
full rotation.  Thinking back to the unit circle, slopes are the same in the first and third
quadrant, and again in the second and fourth.  This is because any line passing through
the origin is identical if rotated $\frac{\tau}{2}$.

\begin{example}
	\exProblem
Factor and solve $\tan^2\theta - 2\tan\theta - 3 = 0$ for all it solutions.

	\exSolution
If it is not obvious that this is a quadratic in tangent, we can substitute $u = \tan\theta$ to
get $u^2 - 2u - 3 = 0$, and un-substitute later.  This factors easily into $(u-3)(u+1)=0$, which
means $u = \{3, -1\}$.  Asking when tangent equals -1 is the same as asking, ``For what
angles is the slope -1?''  These are all the angles beginning with a $\frac{\tau}{8}$ reference
angle in the second quadrant, and every half-rotation after that, i.e. $\frac{3\tau}{8}+\frac{\tau}{2}k$.
The angle of a slope of 3 is not a rational number, but the TI-8* says it is approximately
1.25, so we can write $1.25 + \frac{\tau}{2}k$.
\end{example}

The period can be off, so consider making a general solution and using it to generate answers

max_stars_repo_name: aquatiki/AnalysisTextbook

max_issues_repo_name: aquatiki/AnalysisTextbook

max_forks_repo_name: aquatiki/AnalysisTextbook


text:
\newcommand{\syndes}[2]{\item[\parbox{\textwidth}{#1}]\hfill #2}
\newcommand{\module}[1]{\subsection{#1}}

\section{Syntax of commands}

\module{admin}

\begin{description}
\syndes{
   comment \ARG{separator} \OPT{\ARG{text}} \ARG{separator}
}
{}
%3rd-begin%3rd-end

\syndes{
   deflam \ARG{funname} \ARG{var-list} \ARG{form};
}
{}
%3rd-begin%3rd-end

\syndes{
   deflam \ARG{funname} \ARG{var-list} \ARG{form};
}
{}
%3rd-begin%3rd-end

\syndes{
   echo \ARG{separator} \OPT{\ARG{text}} \ARG{separator}
}
{}
%3rd-begin%3rd-end

\syndes{
   hgk \ARG{s-expr};
}
{}
%3rd-begin%3rd-end

\syndes{
   hgk \ARG{s-expr};
}
{}
%3rd-begin%3rd-end

\syndes{
   know natnums \OPT{\ARG{natnum1}, \SEQ \ARG{natnumN}};
}
{}
%3rd-begin%3rd-end

\syndes{
   load \ARG{file};
}
{}
%3rd-begin%3rd-end

\syndes{
   resetprompt;
}
{}
%3rd-begin%3rd-end

\syndes{
   setprompt to \ARG{s-expr};
}
{}
%3rd-begin%3rd-end

\syndes{
   setprompt to \ARG{s-expr};
}
{}
%3rd-begin%3rd-end

\syndes{
   show \ARG{option};
}
{}
%3rd-begin%3rd-end

\end{description}

\module{context}

\begin{description}
\syndes{
  copycontext \ARG{ctx-name};
}
{}
%3rd-begin%3rd-end

\syndes{
	copylex	\ARG{ctx-name};
}
{}
%3rd-begin%3rd-end

\syndes{
  makecontext \ARG{ctx-name};
}
{}
%3rd-begin%3rd-end

\syndes{
  namecontext \ARG{ctx-name};
}
{}
%3rd-begin%3rd-end

\syndes{
  reset;
}
{}
%3rd-begin%3rd-end

\syndes{
  switchcontext \ARG{ctx-name};
}
{}
%3rd-begin%3rd-end

\end{description}

\module{decide}

\begin{description}
\syndes{
  decide \ARG{wff}  \OPT{by \ARG{fact1} \ARG{fact2} \SEQ} using
  \OPT{\{ \ARG{rewriter} \SEQ \}} \ARG{decider};
}
{}
%3rd-begin%3rd-end

\syndes{
  monad \ARG{wff} \OPT{by \ARG{fact1} \ARG{fact2} \SEQ};
}
{}
%3rd-begin%3rd-end

\syndes{
  monadeq \ARG{wff} \OPT{by \ARG{fact1} \ARG{fact2} \SEQ};
}
{}
%3rd-begin%3rd-end

\syndes{
  ptaut \ARG{wff} \OPT{by \ARG{fact1} \ARG{fact2} \SEQ};
}
{}
%3rd-begin%3rd-end

\syndes{
  taut \ARG{wff} \OPT{by \ARG{fact1} \ARG{fact2} \SEQ};
}
{}
%3rd-begin%3rd-end

\syndes{
  tauteq \ARG{wff} \OPT{by \ARG{fact1} \ARG{fact2} \SEQ};
}
{}
%3rd-begin%3rd-end

\end{description}

\module{eval}

\begin{description}
\syndes{
  assertsimp \ARG{simplabel};
}
{}
%3rd-begin%3rd-end

\syndes{
  attach \ARG{indconst}  to \ALT dar [ rep ] \ARG{sexpr};\\
  attach \ARG{sentconst} to T \ALT NIL \ALT UNDEF;\\
  attach \ARG{funconst} \ALT \ARG{predconst} to \ARG{atom};\\
  attach \ARG{funconst}  to [ \ARG{rep1}, \SEQ, \ARG{repN} = \ARG{repM} ]
  \ARG{atom};\\
  attach \ARG{predconst} to [ \ARG{rep1}, \SEQ, \ARG{repN} ] \ARG{atom};
}
{}
%3rd-begin%3rd-end

\syndes{
  decrep \ARG{replabel1} \OPT{\SEQ \ARG{replabelN}};
}
{}
%3rd-begin%3rd-end

\syndes{
  eval \ARG{wff} \ALT \ARG{fact} \ALT \ARG{term} \OPT{by \ARG{simpexpr}};
}
{}
%3rd-begin%3rd-end

\syndes{
  hardware \ARG{indconst} to \ALT dar \ARG{sexpr};\\
  hardware \ARG{indconst} to \ALT dar [ \ARG{rep} ] \ARG{sexpr};
}
{}
%3rd-begin%3rd-end

\syndes{
  let \ARG{\indconst} to \ALT dar [ \ARG{rep} ] \ARG{term};
}
{}
%3rd-begin%3rd-end

\syndes{
  represent \{ \ARG{sort1}, \SEQ, \ARG{sortN} \} as \ARG{rep} \ALT \ARG{*};
}
{}
%3rd-begin%3rd-end

\syndes{
  rewrite \ARG{wff} \ALT \ARG{fact} \ALT \ARG{term} \OPT{by \ARG{simpexpr}};
}
{}
%3rd-begin%3rd-end

\syndes{
  setbasicsimp \ARG{simplabel} at wffs \{ \ARG{wff1} \SEQ \ARG{wffN} \};\\
  setbasicsimp \ARG{simplabel} at facts \{ \ARG{fact1} \SEQ \ARG{factN} \};
}
{}
%3rd-begin%3rd-end

\syndes{
  simplify \ARG{wff} \ALT \ARG{fact} \ALT \ARG{term};
}
{}
%3rd-begin%3rd-end

\end{description}

\module{language}

\begin{description}
\syndes{
   awff \ARG{awff};
}
{}
%3rd-begin%3rd-end

\syndes{
   declare \OPT{\ARG{sentsym} \ALT \ARG{indsym}} \ARG{sym1} \SEQ \ARG{symN}; \\
   declare \OPT{\ARG{funsym}  \ALT \ARG{predsym}} \ARG{sym1} \SEQ \ARG{symN}
   \ARG{arity};\\
   declare \OPT{\ARG{funsym} \ALT \ARG{predsym}} \ARG{sym1} \SEQ \ARG{symN}
   1 \OPT{[ pre \OPT{= \ARG{prbp}} ]};\\
   declare \OPT{\ARG{funsym} \ALT \ARG{predsym}} \ARG{sym1} \SEQ \ARG{symN}
   2 \OPT{[ inf \OPT{= \ARG{lbp} \ARG{rbp}} ] };
}
{}
%3rd-begin%3rd-end

\syndes{
  declare sort \ARG{sym1} \SEQ \ARG{symN};
}
{}
%3rd-begin%3rd-end

\syndes{
  declare indconst \ALT indpar \ALT indvar \ARG{sym1} \SEQ \ARG{symN}
  [ \ARG{sortsym} ]; \\
  declare funconst \ALT funpar \ARG{sym1} \SEQ \ARG{symN}
  ( \ARG{sortsym1} \SEQ \ARG{sortsymN} ) = \ARG{sortsym};\\
}
{}
%3rd-begin%3rd-end

\syndes{
  extension \ARG{sort} by \ARG{extexpr};
}
{}
%3rd-begin%3rd-end

\syndes{
  moregeneral \ARG{sort1} < \ARG{sort2}, \SEQ, \ARG{sortN} >;
}
{}
%3rd-begin%3rd-end

\syndes{
  mostgeneral \ARG{sym};
}
{}
%3rd-begin%3rd-end

\syndes{
  setfmap \ARG{funsym} ( \ARG{sym1} \SEQ \ARG{symN} ) = \ARG{sym};
}
{}
%3rd-begin%3rd-end

\syndes{
   term \ARG{term};
}
{}
%3rd-begin%3rd-end

\syndes{
   wff \ARG{wff};
}
{}
%3rd-begin%3rd-end

\end{description}

\module{meta}

\begin{description}
\syndes{
   mattach \ARG{indconst} to \ALT dar \OPT{[rep]}
   \ARG{cname}:\ARG{pname}:\ARG{sort}:\ARG{object};
}
{}
%3rd-begin%3rd-end

\syndes{
  reflect \ARG{M-fact} \ARG{arg1} \ARG{arg2} \SEQ \ARG{argN};
}
{}
%3rd-begin%3rd-end

\end{description}

\module{nd}

\begin{description}
\syndes{
   alle \ALT us \ARG{fact} \OPT{,} \ARG{term1} \ARG{term2} \SEQ;
}
{}
%3rd-begin%3rd-end

\syndes{
   alli \ALT ug \ARG{fact} \OPT{\OPT{,} \ARG{indvar1} \ALT \ARG{indpar1} :}
                           \ARG{indvar11}
                           \OPT{\OPT{,} \ARG{indvar2} \ALT \ARG{indpar2} :}
                           \ARG{indvar22} \SEQ;
}
{}
%3rd-begin%3rd-end

\syndes{
   ande \ALT ae \ARG{fact} \OPT{,} 1 \ALT 2; \\
   ande \ALT ae \ARG{fact} \OPT{,} 1 \ALT 2 1 \ALT 2 \SEQ;
}
{}
%3rd-begin%3rd-end

\syndes{
   andi \ALT ai \ARG{fact1} \OPT{,} \ARG{fact2}; \\
   andi \ALT ai \ARG{fact11}
                \OPT{conj \ALT cj \ARG{fact12} conj \ALT cj \ARG{fact13} \SEQ}
                \OPT{,}
                \ARG{fact21}
                \OPT{conj \ALT cj \ARG{fact22} conj \ALT cj \ARG{fact23} \SEQ};
}
{}
%3rd-begin%3rd-end

\syndes{
   assume \ARG{wff1} \OPT{\OPT{,} \ARG{wff2} \SEQ};
}
{}
%3rd-begin%3rd-end

\syndes{
   existe \ALT es \ARG{fact}  \OPT{,} \ARG{indvar1} \ALT \ARG{indpar1}
                  \OPT{,} \ARG{indvar2} \ALT \ARG{indpar2} \SEQ;
}
{}
%3rd-begin%3rd-end

\syndes{
  existi \ARG{fact}
   \OPT{\OPT{,} \ARG{term1} :} \ARG{indvar1} \OPT{occ \ARG{n11} \ARG{n12} \SEQ}
   \OPT{\OPT{,} \ARG{term2} :} \ARG{indvar2} \OPT{occ \ARG{n21} \ARG{n22} \SEQ}
   \SEQ;
}
{}
%3rd-begin%3rd-end

\syndes{
   falsee \ALT fe \ARG{fact1} \OPT{,} \ARG{wff};\\
   falsee \ALT fe \ARG{fact1} \OPT{,} \ARG{fact2};
}
{}
%3rd-begin%3rd-end

\syndes{
   falsei \ALT fi \ARG{fact1} \OPT{,} \ARG{fact2};
}
{}
%3rd-begin%3rd-end

\syndes{
   iffe \ALT ie \ARG{fact} \OPT{,} 1 \ALT 2;
}
{}
%3rd-begin%3rd-end

\syndes{
   iffi \ALT ii \ARG{fact1} \OPT{,} \ARG{fact2};
}
{}
%3rd-begin%3rd-end

\syndes{
   impe \ALT mp \ARG{fact1} \OPT{,} \ARG{fact2};
}
{}
%3rd-begin%3rd-end

\syndes{
   impi \ALT ded  \ARG{fact1} \OPT{, \ALT imp} \ARG{fact};\\
   impi \ALT ded  \ARG{wff} \OPT{, \ALT imp} \ARG{fact};
}
{}
%3rd-begin%3rd-end

\syndes{
   note \ALT ne \ARG{fact1} \OPT{,} \ARG{wff}; \\
   note \ALT ne \ARG{fact1} \OPT{,} \ARG{fact2};
}
{}
%3rd-begin%3rd-end

\syndes{
   noti \ALT ni \ARG{fact1} \OPT{,} \ARG{wff}; \\
   noti \ALT ni \ARG{fact1} \OPT{,} \ARG{fact2};
}
{}
%3rd-begin%3rd-end

\syndes{
   ore \ALT oe \ARG{fact1} \OPT{,} \ARG{fact2} \OPT{,} \ARG{fact2};
}
{}
%3rd-begin%3rd-end

\syndes{
   ori \ALT oi \ARG{fact} \OPT{,} \ARG{wff} \OPT{,} \OPT{lr \ALT rl};\\
   ori \ALT oi \ARG{fact} \OPT{,} \ARG{fact1} \ALT \ARG{wff1}
       disj \ALT dj \ARG{fact2} \ALT \ARG{wff2} disj \ALT dj \SEQ
       \OPT{,} \OPT{lr \ALT rl};
}
{}
%3rd-begin%3rd-end

\syndes{
  subst \ARG{fact1} \OPT{with} \ARG{fact2};\\
  subst \ARG{fact1} \OPT{with} \ARG{fact2} \OPT{right \ALT left};\\
  subst \ARG{fact1} \OPT{with} \ARG{fact2}
                    \OPT{occ \ARG{n1} \ARG{n2} \SEQ} \OPT{right \ALT left};
}
{}
%3rd-begin%3rd-end

\end{description}

\module{parser}

\begin{description}
\syndes{
  backup \ARG{file} open;\\
  backup \ARG{file} close;
}
{}
%3rd-begin%3rd-end

\syndes{done;}
{}
%3rd-begin%3rd-end

\syndes{
   fetch \ARG{file} \OPT{from \ARG{mark1}} \OPT{to \ARG{mark2}};
}
{}
%3rd-begin%3rd-end

\syndes{
   mark \ARG{sym};
}
{}
%3rd-begin%3rd-end

\syndes{
   probe;\\
   probe \ARG{activity};\\
   probe all;\\
}
{}
%3rd-begin%3rd-end

\syndes{
   unprobe \ARG{activity};\\
   unprobe all;
}
{}
%3rd-begin%3rd-end

\end{description}

\module{proof}

\begin{description}
\syndes{
  axiom \ARG{sym} : \ARG{wff};
}
{}
%3rd-begin%3rd-end

\syndes{
   cancel \OPT{\ARG{label}};
}
{}
%3rd-begin%3rd-end

\syndes{
  copyproof \ARG{prf-name};
}
{}
%3rd-begin%3rd-end

\syndes{
   label fact \ARG{sym};\\
   label fact \ARG{sym} = \ARG{label};
}
{}
%3rd-begin%3rd-end

\syndes{
   makeproof \ARG{prf-name};
}
{}
%3rd-begin%3rd-end

\syndes{
   nameproof \ARG{prf-name};
}
{}
%3rd-begin%3rd-end

\syndes{
  switchproof \ARG{prf-name};
}
{}
%3rd-begin%3rd-end

\syndes{
  theorem \ARG{sym} \ARG{hook};
}
{}
%3rd-begin%3rd-end

\syndes{
  theory \ARG{thlabel} : \ARG{wff1} \OPT{\ARG{wff2} \SEQ};\\
  theory \ARG{thlabel} : \ARG{axlabel1} : \ARG{wff}
                         \OPT{\ARG{axlabel2} : \ARG{wff} \SEQ};
}
{}
%3rd-begin%3rd-end

\end{description}

\module{rules}

\begin{description}
\syndes{
	contract \ALT ctc  \ARG{fact} by \ARG{assumption1} \SEQ  \ARG{assumptionN};
}
{}
%3rd-begin%3rd-end

\syndes{
	cut \ARG{fact1} \ARG{fact2};\\
	cut \ARG{fact1} \ARG{fact2} \OPT{keep \ARG{assumption1} \SEQ
	\ARG{assumptionN}};
}
{}
%3rd-begin%3rd-end

\syndes{
	termife \ARG{fact1} \ARG{fact2} \ARG{termif}; \\
	termife \ARG{fact1} \ARG{fact2} \ARG{termif} \OPT{occ \ARG{n1} \ARG{n2}
	\SEQ};
}
{}
%3rd-begin%3rd-end

\syndes{
	termifen \ARG{fact1} \ARG{fact2} \ARG{termif}; \\
	termifen \ARG{fact1} \ARG{fact2} \ARG{termif} \OPT{occ \ARG{n1} \ARG{n2}
	\SEQ};
}
{}
%3rd-begin%3rd-end

\syndes{
	termifi \ARG{fact1} \ARG{fact2} \ARG{wff} \ARG{term1} \ARG{term2};
}
{}
%3rd-begin%3rd-end

\syndes{
	weaken \ALT wk \ARG{fact} by \ARG{fact1} \SEQ \ARG{factN};
}
{}
%3rd-begin%3rd-end

\syndes{
	wffife \ARG{fact1} \ARG{fact2};
}
{}
%3rd-begin%3rd-end

\syndes{
	wffifen \ARG{fact1} \ARG{fact2};
}
{}
%3rd-begin%3rd-end

\syndes{
	wffifi \ARG{wff} \ARG{fact1} \ARG{fact2};
}
{}
%3rd-begin%3rd-end

\end{description}

max_stars_repo_name: getfol/GETFOL

max_stars_repo_licenses: DOC Unlicense

max_issues_repo_name: getfol/GETFOL

max_issues_repo_licenses: DOC Unlicense

max_forks_repo_name: getfol/GETFOL

max_forks_repo_licenses: DOC Unlicense


text:
% declare document class and geometry
\documentclass[12pt]{article} % use larger type; default would be 10pt
\usepackage[margin=1in]{geometry} % handle page geometry

% import packages and commands
\input{../header2.tex}

\title{Math 217 -- Geometry and Physics -- Lec02}
\author{UCLA, Fall 2014}
\date{\formatdate{06}{10}{2014}} % Activate to display a given date or no date (if empty),
         % otherwise the current date is printed

\begin{document}
\maketitle

\section{More on manifolds}

\subsection{Remarks}

\begin{enumerate}
\item Partition of unity: $M = \cup_{\alpha \in I} U_\alpha$ where $U_\alpha$ coordinate charts. There exists $\rho_\alpha : M \rightarrow \R$, $\rho_\alpha \geq 0$ smooth with $\opname{supp}(\rho_\alpha) \subset U_\alpha$ and $\sum_\alpha \rho_\alpha = 1$. $\omega = \sum_\alpha \rho_\alpha \omega$, $\opname{supp}(\rho_\alpha \omega) \subset U_\alpha$.
\item Sheaf theory. local $\implies$ global (Cohomology)
\item Characteristic classes. local computations $\implies$ global invariants.
\item $M ( = \cup_{\alpha \in I} U_\alpha) \overset{f}{\longrightarrow} N ( = \cup_\beta V_\beta)$ is smooth iff $\psi_\beta \circ f \circ \varphi_\alpha^{-1} : \varphi_\alpha(U_\alpha) \rightarrow \psi_\beta (V_\beta)$ [is smooth?]. Where $\varphi_\alpha : U_\alpha \rightarrow \R^n$, $\psi_\beta : V_\beta \rightarrow \R^n$.
\item $\CP^n = \C^n \cup \CP^{n-1} = \dots = \C^n \cup \C^{n-1} \cup \dots \cup \C \cup \set{ \rho_+ }$ [rho sub what?]
\end{enumerate}

Given a tangent bundle $TM$ we have a vector field (smooth section) $X = \sum_i a_i \pd{}{x_i}$ and differential form $\omega = \sum_i a_i dx_i$, where $\langle dx_i, \pd{}{x_j} \rangle = \delta_{ij}$. Furthermore, a differential $p$-form $\eta = \sum_I a_I dx_I \in A^p (M)$, where $I = \set{ 1 \leq i_1 < \dots < i_p \leq n }$ and $1 \leq p \leq n$, is a section on $\Lambda^p T^* M$. $p = \deg \eta$.

The exterior product $\Lambda^p T^* M \overset{\pi}{\longrightarrow} M$.

Define $A(M) = A^*(M) = \oplus_{p=0}^n A^p (M)$. Then $\eta \wedge \eta' = (-1)^{pq} \eta' \wedge \eta$.

$M$ is orientable iff there exists a nowhere vanishing $n$-form $\omega$ on $M^n$.

$d : A^p (M) \rightarrow A^{p+1}(M)$, $d\eta = \sum_I da_I \wedge dx_I$.

$da_I = \sum_{j=1}^n \pd{a_I}{x_j} dx_j$.

\begin{exercise}
As an exercise, show that
\begin{enumerate}
\item $d^2 = 0$. $A^p(M) \overset{d}{\longrightarrow} A^{p+1}(M) \overset{d}{\longrightarrow} A^{p+2}(M)$. $\deg\eta = p$.
\item Leibniz rule: $d(\eta \wedge \eta') = d\eta \wedge \eta' + (-1)^p \eta \wedge d\eta'$.
\item $\int_M \omega = \sum_{\alpha \in I} \int_{U_\alpha} (\rho_\alpha \omega) = \int_M (\sum_\alpha \rho_\alpha) \omega$.

$\int_{U_\alpha} (\rho_\alpha \omega) = \int_{\varphi(U_\alpha) \subseteq \R^n} (\varphi_\alpha^{-1})^* (\rho_\alpha \omega)$
\end{enumerate}
\end{exercise}

\subsection{Stokes}

$\int_M d\eta = \int_{\partial M} \eta$ where $\eta \in A^{n-1}(M)$ implies that $\int_M d\eta = 0$ if $M$ closed compact.

Consider: $f : M \rightarrow M'$ a smooth map. Then the pullback $f^* \eta'$ of $\eta' = \sum_I b_I(y) dy_I \in A(M')$ is given by
\begin{equation}
f^* \eta'(x) = \sum_I b_I(f(x)) df_I.
\end{equation}

\begin{exercise}
Show that
\begin{enumerate}
\item Chain rule: $f^* \circ d_{M'} = d_M f^*$
\item $f^*(\eta_1 \wedge \eta_2) = (f^* \eta_1) \wedge (f^* \eta_2)$
\end{enumerate}
\end{exercise}

\subsection{de Rham Cohomology}

\begin{equation}
H_{\text{dR}}^p(M, \R) = \frac{\ker d}{\Im d} \Big|_{A^p(M)}
\end{equation}
where of course $\Im d \subseteq \ker d$. Then
\begin{equation}
0 \rightarrow A^0(M) \overset{d}{\longrightarrow} A^1(M) \rightarrow \dots \overset{d}{\longrightarrow} A^p(M) \overset{d}{\longrightarrow} \dots \overset{d}{\longrightarrow} A^n(M) \rightarrow 0
\end{equation}

\subsection{Singular homology, Cohomology}

Famous theorem of de Rham: $H_{\text{dR}}^p(M, \R) \cong H_{\text{sing}}^p(M, \R)$ when $M$ is a compact, closed manifold. We will also see later that it is $\cong \ker \Delta_d$, where $\Delta_d$ is the elliptic operator.

Cohomology ring: $H_\text{dR}^* (M) = \oplus_{p=0}^n H_\text{dR}^p(M)$.

\begin{eqn}
\begin{matrix}
H_\text{dR}^p(M) & \times & H_\text{dR}^q(M) & \rightarrow & H_\text{dR}^{p+q}(M) \\
[\eta] = [\eta+d\alpha] & & [\eta'] = [\eta+d\alpha'] & \mapsto & [\eta \wedge \eta']
\end{matrix}
\end{eqn}

\subsection{Poincare duality}

\begin{eqn}
\begin{matrix}
f^* & : & H_\text{dR}^*(M') & \rightarrow & H_\text{dR}^*(M) \\
&& [\eta'] & \mapsto & [f^* \eta']
\end{matrix}
\end{eqn}

\begin{eqn}
\begin{matrix}
H_\text{dR}^p(M) & \times & H_\text{dR}^{n-p}(M) & \rightarrow \R \\
[\eta] = [\eta+d\alpha] &\quad &[\eta'] = [\eta'] &\mapsto \int_M \eta \wedge \eta'
\end{matrix}
\end{eqn}

\subsection{Betti numbers}
Since
\begin{equation}
H_\text{dR}^{n-}(M, \R) \cong H_\text{dR}^p(M, \R) \cong H_\text{dR}^p(M, \R)
\end{equation}
we have $b_p(M) = b_{n-p}(M)$, where
\begin{equation}
b_p(M) = \dim_\R H_\text{dR}^p(M, \R)
\end{equation}
is the $p$th Betti number of $M$.

Euler number: $\chi(M) = \sum_{p=0}^n (-1)^p b_p(M) = \int_M^{2n} e(TM)$ by Gauss-Bonnet, where $e(TM)$ is the Euler characteristic class.

\begin{corollary}
$\dim_\R M = \text{odd} \implies \chi(M) = 0$
\end{corollary}

\begin{conjecture}[Chern]
Let $M$ be an affine-flat compact closed manifold. Then $\chi(M) = 0$.
\end{conjecture}

\end{document}

max_stars_repo_name: paulinearriaga/phys-ucla

max_issues_repo_name: paulinearriaga/phys-ucla

max_forks_repo_name: paulinearriaga/phys-ucla