This commit is contained in:
Vladimir Lemus 2021-08-21 11:29:36 -05:00
parent a3c953f2bc
commit d5277e998f
4 changed files with 421 additions and 0 deletions

BIN
chomsky_homeboy.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

View File

@ -0,0 +1,212 @@
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{hyperref}
\renewcommand{\rmdefault}{ptm}
\usepackage{pgf}
\usepackage{tikz}
\usetikzlibrary{automata,positioning,arrows}
%\tikzset{->, % makes the edges directed
% >=stealth, % makes the arrow heads bold
% node distance=3cm, % specifies the minimum distance between two nodes. Change if necessary.
% every state/.style={thick, fill=gray!10}, % sets the properties for each state node
% initial text=$ $ % sets the text that appears on the start arrow
% }
%\usetikzlibrary{arrows,automata}
%\usepackage[all,cmtip]{xy}
%\usepackage{graphicx}
\author{Autómatas y lenguajes formales}
\title{Gramáticas independientes de contexto}
\begin{document}
\maketitle
\section*{Diseño de gramáticas}
Para enfrentar el problema de diseñar una gramática a partir de ciertas condiciones van unos tips:
\begin{enumerate}
\item Puedes partir de pedazos más sencillos y luego unirlos, por ejemplo:
\{$w\in \{ a,b,c\} | w$ contenga $a$ un número par de veces\} $\cup$ \{$w\in \{ a,b,c\} | w\in b^n c^m,\ n\geq 0,\ m=2n$ \}. Tenemos para el primer ($S_1$) y segundo ($S_2$) caso:
\begin{align*}
S_1 &\rightarrow aS_1a|\epsilon \\
S_2 &\rightarrow bS_2cc|\epsilon
\end{align*}
Uniéndolos para el caso dado al inicio:
\begin{align*}
S &\rightarrow S_1|S_2 \\
S_1 &\rightarrow aS_1a|\epsilon \\
S_2 &\rightarrow bS_2cc|\epsilon
\end{align*}
\item Si se quiere pasar de un autómata finito determinista (DFA) a un lenguaje libre de contexto, se parte del DFA y se construye la gramática. Para cada estado del autómata se asigna una variable ($q_i \Rightarrow R_i$), o poniéndolo en el lenguaje apropiado:
\begin{align*}
R_i &\rightarrow a R_j \Rightarrow \exists \ \delta (q_i,a) = q_j \\
R_i &\rightarrow \epsilon \Rightarrow q_i\in F\ (estado\ final),
\end{align*}
y $R_0$ es la variable inicial, que corresponde al estado inicial $q_0$. Por ejemplo, si tenemos el DFA:
\begin{tikzpicture}%[shorten >=1pt,node distance=2cm,on grid,auto]
\node[state,initial] (q_0) {$q_0$};
\node[state,right=of q_0] (q_1) {$q_1$};
\node[state,accepting,right=of q_1] (q_2) {$q_2$};
\path [-stealth,thick]
(q_0) edge node[yshift=-0.3cm]{0} (q_1)
edge [bend left, above] node {1} (q_2)
(q_1) edge node[yshift=-0.3cm]{1} (q_2)
edge [loop below] node {0} ()
(q_2) edge[loop above] node{0,1} ();
\end{tikzpicture}
Que se traduciría a la gramática
\begin{align*}
R_0 &\rightarrow 0 R_1| 1 R_2 \\
R_1 &\rightarrow 0 R_1| 1 R_2 \\
R_2 &\rightarrow 1 R_2| 0 R_2| \epsilon.
\end{align*}
\item Para llevar la cuenta de los símbolos siempre es útil la producción $R\rightarrow uRv$. No doy ejemplo pues lo dejo para que ustedes lo apliquen.
\end{enumerate}
\section{Formas normales}
Si me permiten me saltaré la parte de paréntesis balanceados, no dejen de revisarlo por su cuenta. Me pasaré directo a las formas normales.
\subsection{Forma normal de Chomsky (CNF)}
En la forma normal de Chomsky un lenguaje libre de contexto se escribe de la forma:
\begin{align*}
A &\rightarrow BC\\
A &\rightarrow a,
\end{align*}
donde $A,B,C$ son variables y $a\in \Sigma$ (un símbolo del alfabeto). Es decir que el CFL está en forma normal de Chomsky siempre que del lado derecho de las producciones haya sólo un par de variables distintas a la inicial o sólo un símbolo terminal, incluido $\epsilon$. Esto hace que sea más sencillo definir la gramática.
Cualquier lenguaje independiente de contexto puede convertirse en forma normal de Chomsky con un análisis detallado:
\begin{enumerate}
\item Dar una nueva variable inicial (así nos aseguramos que la variable inicial no aparezca del lado derecho de las producciones).
\item Se eliminan todas las producciones de la forma $A\rightarrow \epsilon$
\item Se eliminan las reglas unitarias de la forma $A\rightarrow B$
\item Ponemos parches en las secciones que dejamos huecas por nuestro frenesí desechador
\item Ya teniendo las reglas, lo acomodamos para que quede en la forma normal de Chomsky
\end{enumerate}
Como siempre, un ejemplo. Tenemos el lenguaje libre de contexto dado por las variables $A,B$ sobre el alfabeto $\Sigma = \{0\}$:
\begin{align*}
A &\rightarrow BAB|B|\epsilon \\
B &\rightarrow 00|\epsilon
\end{align*}
Lo convertimos a la forma normal de Chomsky siguiendo nuestros pasos descritos, primero damos una nueva variable inicial que llamaremos $S$:
\begin{align*}
S &\rightarrow A \\
A &\rightarrow BAB|B|\epsilon \\
B &\rightarrow 00|\epsilon
\end{align*}
El siguiente paso es quitar todas las producciones que tienen del lado derecho $\epsilon$, para hacer las cosas bien de una vez vamos parchando los desperfectos que provocamos, cualquier variable que en una producción lleve a $\epsilon$ en sus apariciones la cambiamos por la ausencia de cadena, es decir, si hay una producción del tipo $A\rightarrow BAB|AA|a|\epsilon$ entonces se quedan las producciones que no llevan a $\epsilon$, y a continuación se escriben las producciones en la que la variable es sustituida por la cadena vacía: $A\rightarrow BAB|AA|a|\mathbf{BB}|\mathbf{A}$ (las últimas dos producciones son las primeras dos cambiando $A$ por la cadena vacía, en el caso de $AA$ tendría que sustituirse cada $A$, pero como llevan a lo mismo basta con poner una).
De manera similar, para nuestro ejemplo:
\begin{align*}
S &\rightarrow A \\
A &\rightarrow BAB|B|BB|AB|BA|A \\
B &\rightarrow 00
\end{align*}
Ahora eliminamos las reglas unitarias, como en el caso de la eliminación de $\epsilon$ hay que estar un paso adelante, si $S \rightarrow A$, nos saltamos a donde va $A$, entonces queda $S \rightarrow BAB|B|BB|AB|BA|A$, ya nos comimos una producción unitaria, pero faltan ver $A\rightarrow B$ ($A\rightarrow A$ es la producción trivial, $A$ siempre va a $A$ la podemos borrar incluso del CFL y no perdemos nada, la borramos sin más), así podemos escribir:
\begin{align*}
S &\rightarrow BAB|B|BB|AB|BA \\
A &\rightarrow BAB|B|BB|AB|BA \\
B &\rightarrow 00,
\end{align*}
luego
\begin{align*}
S &\rightarrow BAB|00|BB|AB|BA \\
A &\rightarrow BAB|00|BB|AB|BA \\
B &\rightarrow 00
\end{align*}
Este caso es un poco más sencillo, pues no aparece $B\rightarrow A$, de aparecer tendríamos que sustituir esa $A$ por toda la producción del segundo renglón, ténganlo en cuenta.
El último paso es una manita de gato para ponerlo de forma que sólo haya dos variables o un terminal del lado derecho de la producción. Cuando haya tres variables, agrupamos dos en una nueva y damos la regla de producción correspondiente, cuando haya dos terminales agregamos una variable que lleve al par de variables que van a cada símbolo terminal, entonces:
\begin{align*}
S &\rightarrow \mathbf{U}B|B_1B_1|BB|AB|BA \\
A &\rightarrow \mathbf{U}B|B_1B_1|BB|AB|BA \\
\mathbf{U} &\rightarrow BA \\
B &\rightarrow B_1B_1 \\
B_1 &\rightarrow 0
\end{align*}
Noten que en las reglas de producción de $S$ y $A$ van a la par de variables a las que lleva $U$, pero no nos conviene cambiar esa regla por $A|S\rightarrow U$ ya que no es forma normal de Chomsky.
Y ya, esa última es nuestra forma normal de Chomsky del lenguaje libre de contexto dado, cumple los requisitos. Reciban un caluroso saludo de Chomsky por ese logro en la figura \ref{fig:Chom}.
\begin{figure}[h]
\begin{center}
\includegraphics[width=0.5\linewidth]{chomsky_homeboy.jpg}
\caption{''chomskiezzz3" por xantiblingx tieme una licencia CC BY-NC 2.0 }
\label{fig:Chom}
\end{center}
\end{figure}
\subsection{Forma Normal de Greibach (GNF)}
En la forma normal de Greibach las producciones son de la forma:
\begin{equation*}
A \rightarrow aB_1 B_2...B_k,
\end{equation*}
para alguna $k>0$, $B_1$, $B_2$,...,$B_k$ son variables y $a\in \Sigma$, algún símbolo del alfabeto.
Para llegar a la forma normal de Greibach seguimos los pasos:
\begin{enumerate}
\item Pasar el lenguaje independiente de contexto a la forma normal de Chomsky.
\item Para cada variable $A$ y $a$ un símbolo del alfabeto se tiene un nuevo lenguaje:
\begin{equation*}
R_{A,a} = \{\beta \in {\Gamma}^* | A \xrightarrow[G]{L} a \beta\},
\end{equation*}
\noindent que quiere decir que la regla de producción para la variable $A$ puede obtenerse con producciones solo aplicadas al símbolo de la extrema izquierda de la forma enunciada. Si lo vemos de la forma que hemos enunciado las gramáticas independientes de contexto, partiendo de una variable inicial, que va a combinaciones de variables, y esas variables eventualmente van a símbolos terminales, es un poco caminar para atrás (normalmente armamos los términos de izquierda a derecha, para la forma normal de Greibach los armamos de derecha a izquierda).
\end{enumerate}
Veamos para nuestro ejemplo y lo ponemos en una notación más sencilla, partimos de la regla más sencilla:
\begin{align*}
B_1 &\rightarrow 0 \\
B &\rightarrow 0B_1 \\
U &\rightarrow 0B_1A \\
A &\rightarrow 0B_1AB | 0B_1 | 0B_1B| 0B_1ABB | 0B_1BB|0B_1A \\
S &\rightarrow 0B_1AB | 0B_1 | 0B_1B| 0B_1ABB | 0B_1BB|0B_1A
\end{align*}
Lo que hicimos fue sustituir el 0 a la extrema izquierda en la regla $B \rightarrow B_1B_1$ y ahí sustituir en todas las variables que llevan a un cero en la extrema izquierda, ya tenemos nuestras producciones en la forma normal de Greibach.
Quizá esto requiera más explicación, estoy al pendiente.
\subsection{Extra: Chomsky y su disco punk}
Esto no tiene que ver con el tema, es un dato curioso para que no les sea tan aburrida la lectura. Noam Chomsky es muy conocido por ser, quizá, el intelectual estado unidense más famoso en el mundo, de una ideología cercana al anarquismo es un fuerte crítico al imperialismo de su país, un defensor a ultranza de la libertad de expresión y un pacifista (seguro a estas alturas ustedes saben que aunque muchos medios y persona suelen emparentar al anarquismo con la violencia, no necesariamente van pegadas).
Ha visitado México para hablar de su trabajo en política, sus libros al respecto son famosos, y por ser un intelectual anarquista suele ser muy conocido en el ambiente punk y anarcopunk (aunque tiene sus detractores también ahí).
En 1990 la banda punk californiana Bad Religion le pidió hacer un \emph{split} con ellos. Un \emph{split} es una forma común de sacar discos en el ambiente punk, dos bandas graban un mismo disco. Cuando eran acetatos, una banda de un lado, la otra del otro, así podías descubrir dos bandas en un mismo disco. La tradición siguió al casete, al cd y ahora al disco digital.
Bad Religion es una banda aún en activo, su vocalista Greg Graffin tiene un doctorado en paleontología evolutiva y es académico en la UCLA. Aprovecha las vacaciones académicas para seguir presentándose con la banda.
Pueden oír el \emph{split} en la siguiente liga de youtube: \url{https://www.youtube.com/watch?v=-GLIdS0jZrw}.
\end{document}

View File

@ -0,0 +1,209 @@
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{hyperref}
\usepackage{pgf}
\usepackage{tikz}
\usetikzlibrary{automata,positioning,arrows}
%\tikzset{->, % makes the edges directed
% >=stealth, % makes the arrow heads bold
% node distance=3cm, % specifies the minimum distance between two nodes. Change if necessary.
% every state/.style={thick, fill=gray!10}, % sets the properties for each state node
% initial text=$ $ % sets the text that appears on the start arrow
% }
%\usetikzlibrary{arrows,automata}
%\usepackage[all,cmtip]{xy}
%\usepackage{graphicx}
\author{Autómatas y lenguajes formales}
\title{Gramáticas independientes de contexto}
\begin{document}
\maketitle
\section*{Diseño de gramáticas}
Lo último que alcanzamos a ver en la ayudantías regulares fueron unos ejemplos de gramáticas independientes de contexto. Para enfrentar el problema de diseñar una gramática a partir de ciertas condiciones van unos tips:
\begin{enumerate}
\item Puedes partir de pedazos más sencillos y luego unirlos, por ejemplo:
\{$w\in \{ a,b,c\} | w$ contenga $a$ un número par de veces\} $\cup$ \{$w\in \{ a,b,c\} | w\in b^n c^m,\ n\geq 0,\ m=2n$ \}. Tenemos para el primer ($S_1$) y segundo ($S_2$) caso:
\begin{align*}
S_1 &\rightarrow aS_1a|\epsilon \\
S_2 &\rightarrow bS_2cc|\epsilon
\end{align*}
Uniéndolos para el caso dado al incio:
\begin{align*}
S &\rightarrow S_1|S_2 \\
S_1 &\rightarrow aS_1a|\epsilon \\
S_2 &\rightarrow bS_2cc|\epsilon
\end{align*}
\item Si se quiere pasar de un autómata finito determinista (DFA) a un lenguaje libre de contexto, se parte del DFA y se construye la grámatica. Para cada estado del autómata se asigna una variable ($q_i \Rightarrow R_i$), o poniéndolo en el lenguaje apropiado:
\begin{align*}
R_i &\rightarrow a R_j \Rightarrow \exists \ \delta (q_i,a) = q_j \\
R_i &\rightarrow \epsilon \Rightarrow q_i\in F\ (estado\ final),
\end{align*}
y $R_0$ es la variable inicial, que corresponde al estado inicial $q_0$. Por ejemplo, si tenemos el DFA:
\begin{tikzpicture}%[shorten >=1pt,node distance=2cm,on grid,auto]
\node[state,initial] (q_0) {$q_0$};
\node[state,right=of q_0] (q_1) {$q_1$};
\node[state,accepting,right=of q_1] (q_2) {$q_2$};
\draw (q_0) edge node{0} (q_1)
edge [bend left, above] node {1} (q_2)
(q_1) edge node{1} (q_2)
edge [loop below] node {0} ()
(q_2) edge[loop above] node{1} ();
\end{tikzpicture}
Que se traduciría a la gramática
\begin{align*}
R_0 &\rightarrow 0 R_1| 1 R_2 \\
R_1 &\rightarrow 0 R_1| 1 R_2 \\
R_2 &\rightarrow 1 R_2| \epsilon.
\end{align*}
\item Para llevar la cuenta de los símbolos siempre es útil la producción $R\rightarrow uRv$. No doy ejemplo pues ya lo hemos visto y usado.
\end{enumerate}
\section{Formas normales}
Si me permiten me saltaré la parte de paréntesis balanceados, vimos un ejemplo en la clase. Me pasaré directo a las formas normales.
\subsection{Forma normal de Chomsky (CNF)}
En la forma normal de Chomsky un lenguaje libre de contexto se escribe de la forma:
\begin{align*}
A &\rightarrow BC\\
A &\rightarrow a,
\end{align*}
donde $A,B,C$ son variables y $a\in \Sigma$ (un símbolo del alfabeto). Es decir que el CFL está en forma normal de Chomsky siempre que del lado derecho de las producciones haya sólo un par de variables distintas a la inicial o sólo un símbolo terminal, incluído $\epsilon$. Esto hace que sea más sencillo definir la gramática.
Cualquier lenguaje independiente de contexto puede convertirse en forma normal de Chomsky con un análisis detallado:
\begin{enumerate}
\item Dar una nueva variable inicial (así nos aseguramos que la variable inicial no aparezca del lado derecho de las producciones).
\item Se eliminan todas las producciones de la forma $A\rightarrow \epsilon$
\item Se eliminan las reglas unitarias de la forma $A\rightarrow B$
\item Ponemos parches en las secciones que dejamos huecas por nuestro frenesí desechador
\item Ya teniendo las reglas, lo acomodamos para que quede en la forma normal de Chomsky
\end{enumerate}
Como siempre, un ejemplo. Tenemos el lenguaje libre de contexto dado por las variables $A,B$ sobre el alfabeto $\Sigma = \{0\}$:
\begin{align*}
A &\rightarrow BAB|B|\epsilon \\
B &\rightarrow 00|\epsilon
\end{align*}
Lo convertimos a la forma normal de Chomsky siguiendo nuestros pasos descritos, primero damos una nueva variable inicial que llamaremos $S$:
\begin{align*}
S &\rightarrow A \\
A &\rightarrow BAB|B|\epsilon \\
B &\rightarrow 00|\epsilon
\end{align*}
El siguiente paso es quitar todas las producciones que tienen del lado derecho $\epsilon$, para hacer las cosas bien de una vez vamos parchando los desperfectos que provocamos, cualquier variable que en una producción lleve a $\epsilon$ en sus apariciones la cambiamos por la ausencia de cadena, es decir, si hay una producción del tipo $A\rightarrow BAB|AA|a|\epsilon$ entonces se quedan las producciones que no llevan a $\epsilon$, y a continuación se escriben las producciones en la que la variable es sustituida por la cadena vacía: $A\rightarrow BAB|AA|a|\mathbf{BB}|\mathbf{A}$ (las últimas dos producciones son las primeras dos cambiando $A$ por la cadena vacía, en el caso de $AA$ tendría que sustituirse cada $A$, pero como llevan a lo mismo basta con poner una).
De manera similar, para nuestro ejemplo:
\begin{align*}
S &\rightarrow A \\
A &\rightarrow BAB|B|BB|AB|BA|A \\
B &\rightarrow 00
\end{align*}
Ahora eliminamos las reglas unitarias, como en el caso de la eliminación de $\epsilon$ hay que estar un paso adelante, si $S \rightarrow A$, nos saltamos a donde va $A$, entonces queda $S \rightarrow BAB|B|BB|AB|BA|A$, ya nos comimos una producción unitaria, pero faltan ver $A\rightarrow B$ ($A\rightarrow A$ es la producción trivial, $A$ siempre va a $A$ la podemos borrar incluso del CFL y no perdemos nada, la borramos sin más), así podemos escribir:
\begin{align*}
S &\rightarrow BAB|B|BB|AB|BA \\
A &\rightarrow BAB|B|BB|AB|BA \\
B &\rightarrow 00,
\end{align*}
luego
\begin{align*}
S &\rightarrow BAB|00|BB|AB|BA \\
A &\rightarrow BAB|00|BB|AB|BA \\
B &\rightarrow 00
\end{align*}
Este caso es un poco más sencillo, pues no aparece $B\rightarrow A$, de aparecer tendríamos que sustitur esa $A$ por toda la producción del segundo renglón, ténganlo en cuenta.
El último paso es una manita de gato para ponerlo de forma que sólo haya dos variables o un terminal del lado derecho de la producción. Cuando haya tres variables, agrupamos dos en una nueva y damos la regla de producción correspondiente, cuando haya dos terminales agregamos una variable que lleve al par de variables que van a cada sínbolo terminal, entonces:
\begin{align*}
S &\rightarrow \mathbf{U}B|B_1B_1|BB|AB|BA \\
A &\rightarrow \mathbf{U}B|B_1B_1|BB|AB|BA \\
\mathbf{U} &\rightarrow BA \\
B &\rightarrow B_1B_1 \\
B_1 &\rightarrow 0
\end{align*}
Noten que en las reglas de producción de $S$ y $A$ van al par de variables a las que lleva $U$, pero no nos conviene cambiar esa regla por $A|S\rightarrow U$ ya que no es forma normal de Chomsky.
Y ya, esa última es nuestra forma normal de Chomsky del lenguaje libre de contexto dado, cumple los requisitos. Reciban un caluroso saludo de Chomsky por ese logro en la figura \ref{fig:Chom}.
\begin{figure}[h]
\begin{center}
\includegraphics[width=0.5\linewidth]{chomsky_homeboy.jpg}
\caption{''chomskiezzz3" por xantiblingx tieme una licencia CC BY-NC 2.0 }
\label{fig:Chom}
\end{center}
\end{figure}
\subsection{Forma Normal de Greibach (GNF)}
En la forma normal de Greibach las producciones son de la forma:
\begin{equation*}
A \rightarrow aB_1 B_2...B_k,
\end{equation*}
para alguna $k>0$, $B_1$, $B_2$,...,$B_k$ son variables y $a\in \Sigma$, algún símbolo del alfabeto.
Para llegar a la forma normal de Greibach seguimos los pasos:
\begin{enumerate}
\item Pasar el lenguaje independiente de contexto a la forma normal de Chomsky.
\item Para cada variable $A$ y $a$ un símbolo del alfabeto se tiene un nuevo lenguaje:
\begin{equation*}
R_{A,a} = \{\beta \in {\Gamma}^* | A \xrightarrow[G]{L} a \beta\}
\end{equation*}
que quiere decir que la regla de producción para la variable $A$ puede obtenerse con producciones solo aplicadas al símbolo de la extrema izquierda de la forma enunciada. SI lo vemos de la forma quie hemos enunciado las gramáticas independientes de contexto, partiendo de una variable incial, que va a combinaciones de variables, y esas variables eventualemnte van a símbolos terminales, es un poco caminar para atrás (normalemnte armamos los términos de izquierda a derecha, para la forma normal de Greibach los armamos de derecha a izquierda).
\end{enumerate}
Veámoslo para nuestro ejemplo y pongámoslo en una notación más sencilla, partimos de la regla más sencilla:
\begin{align*}
B_1 &\rightarrow 0 \\
B &\rightarrow 0B_1 \\
U &\rightarrow 0B_1A \\
A &\rightarrow 0B_1AB | 0B_1 | 0B_1B| 0B_1ABB | 0B_1BB|0B_1A \\
S &\rightarrow 0B_1AB | 0B_1 | 0B_1B| 0B_1ABB | 0B_1BB|0B_1A
\end{align*}
Lo que hicismo gue sustitur el 0 a la extrema izquierda en la regla $B \rightarrow B_1B_1$ y ahí sustituir en todas las variables que llevan a un cero en la extrema izquierda, ya tenemos nuestras producciones en la forma normal de Greibach.
Quizá esto requiera más explicación, estoy al pendiente.
\subsection{Extra: Chomsky y su disco punk}
Esto no tiene que ver con el curso, es un dato curioso para que no les sea tan aburrida la lectura. Noam Chomsky es muy conocido por ser, quizá, el intelectual estado unidense más famoso en el mundo, de una ideología cercana al anarquismo es un fuerte crítico al imperialismo de su país, un defenser a ultranza de la libertad de expresión y un pacifista (seguro a estas alturas ustedes saben que aunque muchos medios y persona suelen emparentar al anarquismo con la violencia, no necesariamente van pegadas).
Ha visitado México para hablar de su trabajo en política, sus libros al respecto son famosos, y por ser un intelectual anarquista suele ser muy conocido en el ambiente punk y anarcopunk (aunque tiene sus detractores también ahí).
En 1990 la banda punk californiana Bad Religion le pidió hacer un \emph{split} con ellos. Un \emph{split} es una forma común de sacar discos en el ambiente punk, dos bandas graban un mismo disco, cuando eran viniles, una banda de un lado, la otra del otro. Así podías tener dos bandas en un mismo disco. La tradición siguió al casette, al cd y ahora al disco digital.
Bad Religion es una banda aún en activo, su vocalista Greg Graffin tiene un doctorado en paleontología evolutiva.
Pueden oír el \emph{split} en la siguiente liga de youtube: \url{https://www.youtube.com/watch?v=-GLIdS0jZrw}.
\end{document}