To know which methods are available to a Python (or Sage) object, you can use tab-completion:

```
sage: E = EllipticCurve(GF(256),[8,4,3,2,0])
sage: E.<TAB>
```

Then you will notice that there is a `is_irreducible`

method available:

```
sage: E.is_irreducible()
True
```

**EDIT** To see how the computation (hence the proof) works, you can get the source code of the method wit two question marks:

```
sage: E.is_irreducible??
```

Then you will see that is looks at its defining ideal, and see if it is prime. For this (recursively look at the source code), it looks at its complete primary decomposition, this computation is forwarded to Singular, so you will have to look there to see how that part is done algorithmically.